TLS/SSL 通信暗号化 - TLS/SSL(通信暗号化)
インターネット通信を暗号化するプロトコル。HTTPS の基盤技術であり、盗聴・改ざん・なりすましを防ぐ。
概念図
実例
TLS 接続をテスト
bash
openssl s_client -connect example.com:443 -servername example.comTLS バージョンと暗号スイートを確認
bash
curl -v https://example.com 2>&1 | grep "SSL connection"TLS ハンドシェイクの流れ
TLS 1.3 のハンドシェイクは以下の手順で行われます。
- ClientHello: クライアントが対応する TLS バージョン・暗号スイート・鍵共有パラメータを送信
- ServerHello: サーバーが暗号スイートを選択し、証明書と鍵共有パラメータを返す
- 鍵の導出: 双方が共有秘密から暗号化鍵を導出
- Finished: ハンドシェイク完了。以降の通信は暗号化される
TLS 1.3 では 1-RTT(1 往復)でハンドシェイクが完了し、TLS 1.2 の 2-RTT から改善されています。
ベストプラクティス
- TLS 1.3 の使用: 可能な限り TLS 1.3 を使用する。TLS 1.0 / 1.1 は廃止済み
- 強力な暗号スイート: AES-256-GCM + SHA-384 や ChaCha20-Poly1305 を優先
- HSTS の設定:
Strict-Transport-Securityヘッダで HTTP へのダウングレードを防止 - 証明書の管理: クラウドではマネージド証明書(ACM 等)で自動管理。オンプレミスでは Let's Encrypt や商用 CA を利用し、有効期限切れに注意
- Perfect Forward Secrecy(PFS): ECDHE を使用し、サーバー鍵が漏洩しても過去の通信を復号できないようにする
