証明書のおはなし
理解を助ける情報があった.
http://www.linux.or.jp/JF/JFdocs/SSL-Certificates-HOWTO/x73.htmlSSL とは何か、証明書とは何か?
Secure Socket Layer プロトコルは Netscape 社によって web サーバとブラウザの間の安全な通信を保証するために作り出されました。このプロトコルは通信の一方の端、または両端の身元を保証するために、認証局 (Certificate Authority, CA) と呼ばれる第三者を用います。以下が簡単なその仕組みです。
- ブラウザがセキュアなページ(通常 https:// )を要求する。
- その web サーバが、その証明書と一緒にその公開鍵を送る。
- ブラウザはその証明書が信用が与えられた機関(通常は信用が与えられたルート認証局(root CA))によって発行されたものであること、その証明書がまだ有効であって、そして、その証明書が接続しようとしているそのサイトと関係づけられていることをチェックする。
- そして、ブラウザはその公開鍵を用いてランダムに選んだ対称鍵を暗号化し、その鍵と要求された URL を暗号化したものを、他の暗号化した http データとともに送る。
- web サーバは自分の秘密鍵を用いて、送られてきた対称鍵を復号し、その対称鍵を用いて URL と http データを復号する。
- web サーバは要求された html ドキュメントと http データを対称鍵で暗号化して送り返す。
- ブラウザはその http データと html ドキュメントを対称鍵を用いて復号し、その情報を表示する。
以上で理解しなくてはならない概念がいくつか出てきました。