先のページと同じ内容で話を進めていきます。
SSLが、公開鍵と秘密鍵を使った通信から共通鍵を使った通信に切り替えるまでの一般的な流れは、次の通りとなります。
より詳細な仕組みについては、「身近なPKI〜SSLを理解する」が役に立ちます。
1.WebブラウザからSSLによる通信をサーバに要求
2.署名付きの証明書とサーバの公開鍵を送付
3.共通鍵をランダムに生成
4.生成した共通鍵をサーバの公開鍵で暗号化して送付
5.共通鍵での通信を開始
この手順からも分かるように、公開鍵と秘密鍵はWebブラウザとサーバ間で共通鍵を共有するまでの間だけ使われます。
無事に共通鍵を使った通信ができる状態になると、肝心の通信内容を送受信し始めます。
通信相手が信頼できるかどうかを証明してくれるのが「証明書」です。
この証明書を発行してくれるのが「認証機関」(CA)です。
認証機関は、サーバ所有者からの申請を受けて、認証機関の秘密鍵で暗号化された証明書を発行します。
認証機関の秘密鍵で暗号化することで、証明書の改ざんや偽証明書の作成を防ぎます。
サーバは、先ほどの手順2でこの証明書とサーバの公開鍵をWebブラウザに送付します。
Webブラウザは、あらかじめ組み込まれている認証機関の公開鍵を使って証明書を復号化し、このサーバが信頼できる相手かどうかを判断します。
組み込まれていない認証機関であったり、証明書を確認できなかったりした場合には、Webブラウザが警告を発する仕組みです。
認証機関は、OpenSSLの機能を利用して構成します。
以下では、OpenSSLをデフォルトのディレクトリ(/usr/local/ssl)にインストールしているものとして話を進めます。
OpenSSLをインストールしたディレクトリにあるmiscディレクトリには、CA.shというシェルスクリプトが用意されている。
このスクリプトはいくつかのオプションパラメータを持ち、-newcaオプションで認証機関を構築できます。
具体的にいえば、認証機関のファイルを格納するディレクトリ(デフォルトは「demoCA」)を作成して、証明書ファイルと秘密鍵ファイルを作成します。