🙄

【初学者によるまとめ】この一冊で全部わかるWeb技術の基本 「Chapter3」>「11 HTTPSのやり取り」

2024/12/09に公開

目的:「イラスト図解式 この一冊で全部わかるWeb技術の基本」の要点を自分なりにまとめアウトプットして理解力の向上に努める。

注意点
🤔 ←この絵文字の文章は個人的な見解になります。的外れなこともあるかと思います。
例)🤔<(感想、考察、疑問点など)

(参考書籍)

  1. イラスト図解式 この一冊で全部わかるWeb技術の基本

(参考サイト)

  1. ネットワークエンジニアとして
  2. 日経XTECH
  3. 千葉県産業振興センター

SSL/TLSハンドシェイク

〇HTTP において TCP が行っている具体的な通信手順として「通信経路を確立してから通信を開始する」ため、リクエスト時には3回の送受信を必要とすることから「3ウェイシェイクハンド」、レスポンス時には4回の送受信が必要となる事から「4ウェイシェイクハンド」と呼ばれる
⇒この SSL 版を『SSL/TLSハンドシェイク』と呼ぶ

SSL/TLSハンドシェイクでは「コネクション確立 → 通信開始」とはならず、「コネクション確立 → 安全性確保ためのいくつかの処理 → 通信開始」という一手間かかった通信手順を踏んでいる

20240611_142400_書類_000055.jpg
 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
【これら大きく4段階に分けられる手順を踏んだ後にようやくHTTPSの通信を開始する 】

①暗号化方式の決定

  • 暗号化方式はいくつか存在するため、「ブラウザとサーバー間で利用する暗号化方式」を決定する必要がある
    • その他にも「SSL/TLSのバージョン」「セッションID」などの情報も併せてメッセージに含めてやり取りしている
[クライアント側]
- "Client Hello" … SSL通信開始の合図。使用可能な暗号方式のリストなどをメッセージとして送る。
[サーバー側]
- "Server Hello" … `Client Hello`からのリストから、暗号化方式など通信の手順を決定。その後、クライアント側に通知。

②通信相手の証明

  • 通信先のサーバーが"正しいかどうか"をSSLサーバー証明書から確認する
    信頼できない証明書である場合はブラウザ上で警告が表示される
    • 大まかな流れは次の2つ
    1. クライアントは自身が控えている「信頼できる認証局の証明書リスト」を照合して、信頼できる証明書がどうかを確認
    2. SSLサーバー証明書を認証局が保証している通信先のペア鍵にあたる公開鍵で復号できる」=「その暗号化されているSSLサーバー証明書は正しい」
[サーバー側]
- "Server Certificate" … サーバーにある SSL証明書 を送信
- "Server Hello Done" … サーバーがクライアント宛に証明書など遅れる情報は全て送ったという意思表明通知

③鍵の交換

  • 通信で使用するクライアントとサーバーの両者だけが知る共通鍵を生成して送信する
    • この鍵で通信内容の暗号化、復号をする際に用いる
[クライアント側]
- "Client Key Exchange" … 通信の暗号化、復号化する際に使用する共通鍵を生成し、サーバー宛てに送信する

④暗号化方式の確認

  • 決定事項の最終確認
[クライアント側]
- "Change Cipher Spec" … 先述の暗号化方式を含めた通信についての決定事項の最終確認
- "Finished" … 準備完了
[サーバー側]
- "Change Cipher Spec" … 先述の暗号化方式を含めた通信についての決定事項の最終確認
- "Finished" … 準備完了

Discussion