SSL(Secure Socket Layer)とは、
インターネット上で情報を暗号化して送受信するプロトコルで、
Netscape Communications社より開発されました。
その後、
IETFよりRFC2246としてTLS1.0を公表されました。
現在ではこのTLS(Transport Layer Security)という名称が使われ、
TLS 1.1、TLS 1.2と発展しています。
これらはコネクション型のトランスポート層プロトコルの暗号用として使われます。
したがって、この上位アプリケーションであるHTTP、SMTP、POP3、FTPなどで、
アプリケーションに変更なしで暗号通信を使えるようになります。
以下で簡単にSSLの動作を(サーバー側のみの認証の動作)説明します。
実際のアルゴリズムは 複数の選択肢が定義されており、 SSL通信の開始時に行われるネゴシエーション時に、 双方で可能なアルゴリズムの中から選択されます。 SSL通信時開始時にサーバーとブラウザとの間でSSL セッションIDと呼ばれる識別番号が取り決められ, サーバーとクライアントのそれぞれで通信時にIDを管理し、 IPアドレスとポート番号との組み合わせに対応付けていいます。 その意味から、SSLはセッション層のプロトコルと言えます。 またこのIDは、SSL通信のサーバー負荷分散などにも利用されます。
このページのステップ1で作成したダミー認証局で、サーバー証明書を作成する例です。 その環境と同じ場合の説明です。 また、申請側の秘密鍵は tarou.key の名前で作ってあるとします。
まず、X.509のサーバー証明書署名要求ファイル(Certification Signing Request)を作成して、認証局(CA)に申請します。
以下は、カレントディレクトリに申請側の秘密鍵は tarou.key がある場合の、
opensslを使って、サーバー証明書署名要求ファイルのtarou-web.csrを作っている例です。
-bash-3.2$ openssl req -new -key ./tarou.key -out ./tarou-web.csr
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) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:chiyoda-ku
Organization Name (eg, company) [My Company Ltd]:dummyCA
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:f270na-53
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
-bash-3.2$
f270na-53の部分が、FQDN(完全修飾ドメイン名)を記述する部分です。 実験ではローカルアドレスの指定も可能でした
実際の申請形態はWebやメール、書類など認証局によりさまざまです。
認証局では、この資料によって、申請者が記載通りに存在するかなどの身元調査を行います。
また使うサーバーによって鍵の保存形式も異なるのでその種類が求められるでしょう。
以下は、上記のように作成された署名要求ファイル(tarou-web.csr)から
サーバー証明書(tarou-web-ca.crt)をopensslコマンドで作成している例です。
-bash-3.2$ openssl ca -config /home/koushi/suzuki/etc/CA/openssl.cnf -out ./tarou-web-ca.crt -infiles ./tarou-web.csr Using configuration from /home/koushi/suzuki/etc/CA/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 8 (0x8) Validity Not Before: Oct 21 04:24:18 2011 GMT Not After : Oct 20 04:24:18 2012 GMT Subject: countryName = JP stateOrProvinceName = Tokyo organizationName = dummyCA commonName = f270na-53 X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: ED:AB:74:E0:7D:B6:E4:84:F2:62:5F:F6:20:89:2B:60:4F:F6:AC:AB X509v3 Authority Key Identifier: DirName:/C=JP/ST=Tokyo/L=Shinjuku-ku/O=dummyCA/CN=test/emailAddr ess=test@dummy.ne.jp serial:B7:29:5A:3C:E2:41:5F:5B Certificate is to be certified until Oct 20 04:24:18 2012 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated -bash-3.2$
必要なファイルは、上記で取得したサーバー証明書(tarou-web-ca.crt)と
秘密鍵(tarou.key -out)がある状態です。鍵の設定ファイルを編集して、
鍵をパスを設定します。
apacheの例を以下に示します。
鍵が、/etc/keysの位置にある場合です。
/etc/httpd/conf.d/ssl.confを編集します。
次の2項目を、以下のように変更します。
SSLCertificateFile /etc/keys/tarou-web-ca.crt
SSLCertificateKeyFile /etc/keys/tarou.key
そして、apacheを再起動します。
[root@akia keys]# /etc/rc.d/init.d/httpd restart httpdを停止中: [ OK ] httpdを起動中: [ OK ] [root@akia keys]#
もう一つ、XAMPPのapache設定例を示します。
E:\xampp\apache\conf\ssl.crt\に、tarou-web-ca.crtとtarou.keyをコピーした場合の例です。その場合、
E:\xampp\apache\conf\extra\httpd-ssl.confの内容の次の2項目を変更します。
SSLCertificateFile "conf/ssl.crt/tarou-web-ca.crt"
SSLCertificateKeyFile "conf/ssl.key/tarou.key"
このようにして、このサーバーにInternet Explorer 8で接続した場合の例を示します。
次のような警告が出るでしょう。
このような表示の場合は、閲覧すべきではありません。
上記で作成した証明書が、正規の認証局で署名したものではないからです。
この例では、ダミーの認証局の証明書がInternet Explorer 8に登録されていないからです。
このような場合、安易に対応の認証局の証明書インポートすべきではありませんが、以下でインポートの例を示します。
「ツール」メニューの「インターネットオプション」で出現するダイアログで、
『コンテンツ』タブを選んでいるの状況が下記イメージです。
ここで。「証明書」のボタンをクリックします。
この場合は、「信頼されたルート証明機関」でインポートします。
次へ進みます
tarou-web-ca.crtの署名をしたダミー認証局の証明書を参照して、次のボタンをクリックします。
(なお、ここで作成した認証局証明書ファイル(cacert.pem)の拡張子を.crtに変更したものを参照している例です。)
次へ進みます
これで設定が終わりです。これで再びサーバーに接続した例を下記に示します。
アドレスの部分に鍵のマークが付いて、この時にブラウザとサーバー間の通信が暗号化されていることになります。
また鍵の部分のクリックで、サーバーの証書が確認できます。
Extended Validation 証明書
現在、安直な確認による証明書と、厳格な審査をした証明書とが区別されてこなかったため、
逆に悪意ある者たちによって信頼性を見せかけるためにSSLが使われ始めるようになるなどの
混乱が生じています。
そこで、発行者の審査に厳格な一定の基準を設けたサーバー用の公開鍵証明書として
EV SSL証明書と呼ばれるものが使われるようになっています。
参考ページ→日本ベリサイン