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通信でのリクエスト処理を次に示します。
図5-1 SSL通信でのリクエスト処理
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.