気の向くままに ~備忘録@wiki~

OpenSSL

最終更新:

shirayuu

- view
管理者のみ編集可
昨今、セキュアな接続が求められているので勉強しておきたいところです。
ちょっとやそっちょじゃ把握しきれないので様々なサイトを参考にしつつメモしていきます。

そもそも、SSL とは
IT用語辞典より: http://e-words.jp/w/SSL.html

SSLとは、Netscape Communications社が開発した、インターネット上で情報を暗号化して送受信するプロトコル。現在インターネットで広く使われているWWWやFTPなどのデータを暗号化し、プライバシーに関わる情報やクレジットカード番号、企業秘密などを安全に送受信することができる。
SSLは公開鍵暗号や秘密鍵暗号、デジタル証明書、ハッシュ関数などのセキュリティ技術を組み合わせ、データの盗聴や改ざん、なりすましを防ぐことができる。OSI参照モデルではセッション層(第5層)とトランスポート層(第4層)の境界で動作し、HTTPやFTPなどの上位のプロトコルを利用するアプリケーションソフトからは、特に意識することなく透過的に利用することができる。SSL 3.0をもとに若干の改良が加えられたTLS 1.0がRFC 2246としてIETFで標準化されている。

OpenSSL 公式ページ
http://www.openssl.org/

OpenSSL 公式ページ(日本語)
http://www.infoscience.co.jp/technical/openssl/



参考にするサイト




何が作れるか

OpenSSL を活用することにより暗号化通信を行うことができます。そのためには、認証局や秘密鍵、公開鍵、認証書などを作成する必要があります。
  • CA(自己認証局)
  • 秘密鍵
  • 公開鍵
  • 認証書

注釈) 自前でHTTPSやFTPSなどSSLを活用するサーバを作る場合には、自分で認証する機関を作ってその認証機関から自分のサーバは信頼できるという情報を与えるわけですから、よく考えれば自分で作った機関が自分のサーバは信頼できるという信頼できないサーバを作ることになります。そのため、WWWブラウザからは信頼されないWebサイトとして警告を受けます。例えば、amazon.com は、VeriSign, Inc.(ベリサイン)から認証を受けています。

CA.sh の場所

OS や ディストリビューション(Linux) によって異なる場合があります。実際に、
ubuntu(9.10) では、/usr/lib/ssl/misc/CA.sh に存在し、 FreeBSD では、/usr/local/openssl/misc/CA.sh 存在します。

例えば、次の方法でCA.sh を取得します。
# cp -v /usr/lib/ssl/misc/CA.sh ~/tmp/ssl/
# cp -v /usr/local/openssl/misc/CA.sh ~/tmp/ssl/

CA.sh の編集

さて、実際にCA.sh を編集していきます。

CA(認証局) の作成

CA certificate filename (or enter to create)
[Enter]
Making CA certificate ...
Generating a 1024 bit RSA private key
................++++++
......................++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase: パスワード
Verifying - Enter PEM pass phrase: パスワード
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: JP (国名)
State or Province Name (full name) [Some-State]: Kyoto(都市名)
Locality Name (eg, city) []: Kyoto (市町村)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: (組織名)
Organizational Unit Name (eg, section) []: (部署名)
Common Name (eg, YOUR name) []: (ホスト名)
Email Address []: root@localhost (連絡先メールアドレス)

自分で認証局を作る場合は、組織名も部署名もないわけですからかまわないと思います(それゆえに信頼できない認証局)。

cacert.pem 認証機関の証明書
private/cakey.pem 認証機関の秘密鍵
目安箱バナー