【てぃーえるえすはんどしぇいく】

TLSハンドシェイク とは?

💡 暗号通信の「事前準備」
📌 このページのポイント
TLSハンドシェイク Client Server ① ClientHello(暗号方式一覧) ② ServerHello + 証明書 + 公開鍵 ③ 証明書検証 → プリマスタシークレット セッション鍵を生成 セッション鍵を生成 ④ 共通鍵を導出 ⑤ Finished(双方) 暗号化通信開始 🔒
TLSハンドシェイクのイメージ
ひよこ ひよこ

TLSハンドシェイクでは何をしてるの?

ペンギン先生 ペンギン先生

①クライアントが対応する暗号スイートの一覧を送信(ClientHello)、②サーバーが証明書と選択した暗号スイートを返信(ServerHello)、③クライアントが証明書を検証(CAの署名を確認)、④鍵交換(Diffie-Hellman等)で共通の暗号鍵を生成、⑤以降はこの共通鍵でAES暗号化通信。証明書で「本物のサーバーか」を確認するのが重要だよ

ひよこ ひよこ

TLS 1.3で何が変わった?

ペンギン先生 ペンギン先生

ハンドシェイクが2-RTTから1-RTTに短縮(高速化)、②脆弱な暗号スイートを廃止(RC4、SHA-1等を完全削除)、③0-RTTモード(再接続時にハンドシェイクなしでデータ送信可能)、④サーバー証明書も暗号化(盗聴者にアクセス先ドメインが見えない)。セキュリティとパフォーマンスの両方が向上したよ

ひよこ ひよこ

SSL証明書のエラーが出たらどうする?

ペンギン先生 ペンギン先生

「この接続ではプライバシーが保護されません」は証明書エラー。原因は①期限切れ、②ドメイン名の不一致、③自己署名証明書、④中間証明書の欠落。Let's Encrypt(無料CA)なら自動更新でき、certbotが期限切れを防いでくれる。本番サイトで証明書エラーを放置するのはセキュリティ的にNGだよ

ひよこ ひよこ

開発者が知っておくべきことは?

ペンギン先生 ペンギン先生

①すべてのWebサイトはHTTPS必須(ChromeはHTTPサイトに「安全ではありません」と表示)、②Let's Encryptで無料で証明書取得、③Mixed Content(HTTPSページ内のHTTPリソース)はブロックされる、④TLS 1.2以下はセキュリティリスク。Cloudflareを前段に置くとTLS設定を丸投げできて楽だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
TLSハンドシェイク」って出てきたら「HTTPS通信の暗号化を確立する手順」と思えればだいたいOK!
📖 おまけ:英語の意味
「TLS Handshake」 = TLS握手
💬 SSL(Secure Sockets Layer)の後継がTLS。SSL/TLSと表記されることも多いよ
← 用語集にもどる