HTTPS通信の図解:証明書と鍵の流れを理解する

HTTPSは「暗号化されている」と言われますが、実際には 複数の鍵 と 証明書 が段階的に使われています。

ここでは、

  • どの鍵が
  • どのタイミングで
  • 何のために使われているか

を 通信の流れ順 に整理します。


全体像(まずは俯瞰)

[ブラウザ]                           [Webサーバ]
     |                                    |
     | ① HTTPSで接続要求                   |
     |----------------------------------->|
     |                                    |
     | ② サーバ証明書(公開鍵入り)           |
     |<-----------------------------------|
     |                                    |
     | ③ 証明書を認証局(CA)で検証            |
     |                                    |
     | ④ 共通鍵を公開鍵で暗号化して送信        |
     |----------------------------------->|
     |                                    |
     | ⑤ 共通鍵で暗号通信開始                |
     |<========== 暗号化通信 ==============>|

登場人物と用語整理

先に用語を整理しておくと理解しやすくなります。

用語役割
公開鍵暗号化に使う鍵(誰でも知ってよい)
秘密鍵復号に使う鍵(サーバだけが持つ)
共通鍵実際の通信データ暗号化に使う鍵
サーバ証明書公開鍵+認証局の署名が入った証明書
認証局(CA)サーバが本物であることを保証

① ブラウザがHTTPSで接続要求

ユーザーがURLにアクセスします。

https://example.com

ブラウザは、

「HTTPS(安全な通信)で接続したい」

とサーバに要求します。


② サーバが「サーバ証明書」を送る

Webサーバは サーバ証明書 を返します。

サーバ証明書に含まれるもの

  • サイトのドメイン名
  • サーバの 公開鍵
  • 発行した認証局(CA)
  • 認証局の電子署名
  • 有効期限

重要ポイント:

🔑 この時点では、まだ通信は暗号化されていない


③ ブラウザが認証局(CA)で証明書を検証

ブラウザは証明書を見て、次を確認します。

  • 発行元の認証局は信頼できるか
  • ドメイン名は一致しているか
  • 期限切れではないか
  • 改ざんされていないか

なぜ検証できるのか?

ブラウザには 信頼済み認証局のルート証明書 があらかじめ組み込まれているからです。


④ 共通鍵を「公開鍵」で暗号化して送信

証明書が正しいと確認できたら、ブラウザは次の処理を行います。

  1. ランダムな 共通鍵 を生成
  2. サーバ証明書に入っていた 公開鍵 で共通鍵を暗号化
  3. 暗号化した共通鍵をサーバに送信
共通鍵 → 公開鍵で暗号化 → サーバへ送信

ここがHTTPSの最大の山場です。


⑤ サーバが秘密鍵で復号 → 暗号通信開始

サーバは、

  • 自分だけが持っている 秘密鍵 を使って
  • 受け取った共通鍵を復号

これで、

  • ブラウザ
  • サーバ

の 両方が同じ共通鍵 を持つ状態になります。

以降は、

共通鍵で通信内容を暗号化

した高速な暗号通信が続きます。


なぜ「共通鍵」を使うのか?

疑問に思うポイントです。

公開鍵暗号だけではダメ?

  • 公開鍵暗号は 安全
  • しかし 計算コストが高く遅い

共通鍵暗号の特徴

  • 高速
  • 大量データ向き

そのためHTTPSでは、

  • 鍵の交換:公開鍵暗号
  • 実際の通信:共通鍵暗号

という ハイブリッド方式 を使っています。


HTTPSが安全と言える理由(まとめ)

HTTPS通信が安全なのは、次の仕組みが揃っているからです。

  • 認証局による「本物確認」
  • 公開鍵・秘密鍵による安全な鍵交換
  • 共通鍵による高速な暗号通信

基本情報技術者試験向け要点まとめ

試験で問われやすいポイントを整理します。

  • サーバ証明書には 公開鍵 が含まれる
  • 証明書は 認証局が発行
  • 共通鍵は 公開鍵で暗号化して送信
  • 実際の通信は 共通鍵暗号方式

訪問数 9 回, 今日の訪問数 9回