パターン1: 通常のSSL/TLS通信(Proxyなし)
[Client] [Server] [CA (Certificate Authority)]
| | |
|--- (1) ClientHello ------>| |
| | |
|<--- (2) ServerHello ------| |
|<--- (3) Certificate ------| |
| (サーバ証明書送信) | |
| | |
|--- (4) 証明書検証 -------->| |
| ・発行者(Issuer)確認 | |
| ・有効期限チェック | |
| ・失効リスト(CRL/OCSP) |---(5) 証明書ステータス確認----------->|
| |<---(6) ステータス応答-----------------|
| ・デジタル署名検証 | |
| (CA公開鍵で検証) | |
| | |
|--- (7) ClientKeyExchange ->| |
| (暗号化されたPreMasterSecret) |
| | |
|--- (8) ChangeCipherSpec ->| |
|--- (9) Finished ---------->| |
| | |
|<-- (10) ChangeCipherSpec -| |
|<-- (11) Finished ---------| |
| | |
|=== (12) 暗号化通信開始 ====| |
| | |
パターン2: Forward Proxy経由のSSL/TLS通信
[Client] [Forward Proxy] [Server] [CA]
| | | |
|-(1) CONNECT要求------->| | |
| (例: CONNECT server:443)| | |
| | | |
|<-(2) 200 Connection----| | |
| Established | | |
| | | |
|===(3) SSL Tunnel確立====| | |
| | | |
|-(4) ClientHello------->|-(転送)----------------->| |
| | | |
|<-(5) ServerHello-------|<-(転送)-----------------| |
|<-(6) Certificate-------|<-(転送)-----------------| |
| | | |
|-(7) 証明書検証----------|--(透過的転送)---------->| |
| (Clientが直接実行) | | |
| | | |
|-(8) KeyExchange------->|-(転送)----------------->| |
| | | |
|===(9) 暗号化通信========|===(透過的転送)==========| |
| (Proxyは内容を見れない)| | |
パターン3: SSL Inspection Proxy(中間者型)
[Client] [Inspection Proxy] [Server] [CA]
| | | |
|-(1) ClientHello------->| | |
| |-(2) ClientHello-------->| |
| | | |
| |<-(3) ServerHello--------| |
| |<-(4) Server証明書-------| |
| | | |
| |-(5) 証明書検証--------->|---(CRL/OCSP)----->|
| | |<-------------------|
| | | |
|<-(6) ServerHello------| | |
|<-(7) Proxy発行の--------| | |
| 代理証明書 | | |
| (Proxyの秘密鍵で署名) | | |
| | | |
|-(8) 証明書検証: | | |
| ★Proxy CAが信頼済み | | |
| ストアに必要 | | |
| | | |
|-(9) KeyExchange------->| | |
| |-(10) KeyExchange------->| |
| | | |
|===(11)暗号化通信=======|===(12)暗号化通信========| |
| (Proxy-Client間) | (Proxy-Server間) | |
| | | |
| |--(13) 通信内容を-------- |
| | 復号化・検査 |
| | (ウイルススキャン等) |
PKI証明書チェーンの検証フロー
[サーバ証明書]
|
| (1) 発行者(Issuer)を確認
↓
[中間CA証明書]
|
| (2) 発行者を確認
↓
[ルートCA証明書]
|
| (3) 信頼されたルート証明書
| ストアに存在するか確認
↓
[検証成功] → SSL/TLS通信続行
検証項目:
├─ (A) 証明書の有効期限
├─ (B) デジタル署名の検証
├─ (C) ドメイン名の一致(CN/SAN)
├─ (D) 証明書失効リスト(CRL)
└─ (E) OCSPレスポンス確認
重要なセキュリティポイント
[証明書検証失敗のケース]
1. 期限切れ
証明書の有効期限 < 現在時刻 → エラー
2. 自己署名証明書
発行者 = サブジェクト → 警告
(信頼されたストアになし)
3. ドメイン不一致
証明書のCN/SAN ≠ アクセス先ドメイン → エラー
4. 失効された証明書
CRL/OCSPで失効確認 → エラー
5. 証明書チェーン不完全
中間CA証明書が欠落 → エラー
このフローチャートは情報処理安全確保支援士試験の出題範囲に基づいています。ご質問があればお気軽にどうぞ!