5.1.2 SSL通信の手順
SSL通信の手順を次に示します。2〜6の手順をSSLでのハンドシェイクと呼びます。
-
Webブラウザから,https://へのリクエストを実行します。
-
Webブラウザは,使用できるSSLのバージョンや暗号種別を示すデータをWebサーバに送付します。
-
Webサーバは,使用するSSLのバージョンと暗号種別を決定し,Webブラウザに通知します。また,公開鍵とCAの署名が入った証明書をWebブラウザに送付します。
-
WebブラウザはWebブラウザが持っているCAの公開鍵を使用して,送付された証明書が改ざんされていないことを確認して,Webサーバの公開鍵を入手します。
-
Webブラウザは,通信でWebサーバと共有する対称鍵を作成し,Webサーバの公開鍵で暗号化して送信します。また,Webブラウザが持っている証明書をクライアント認証のためにWebサーバに提示する場合,証明書を送信します。
Webサーバの公開鍵で暗号化したデータは,対になる秘密鍵がないと復号できません。つまり,データ送信先のWebサーバだけがデータの内容を解読できます。
-
Webサーバは受信した対称鍵をWebサーバの秘密鍵で復号し,入手します。Webブラウザからの証明書を受信した場合は,証明書を確認します。
-
Webブラウザと,Webサーバの間で共有された対称鍵を使用して,HTTPリクエストまたはレスポンスを暗号化し,送受信します。
SSL通信でのリクエスト処理を次に示します。
ハンドシェイクの際に,クライアント側とWebサーバ側の両方に有効であり,最も強い強度の暗号が選択されます。Webサーバ側の暗号種別は,SSLCipherSuiteディレクティブで指定します。この指定で,常にすべての暗号種別を有効にしておけば,クライアントが持つ最も強い強度の暗号で通信できることになります。