0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

証明書と公開鍵、共通鍵について

Last updated at Posted at 2025-04-05

【免責事項】
本投稿はChatGPT回答/完全自分用メモとなります。
その為、正確性・完全性を保証するものではありません。
万が一、本情報に基づいて被ったいかなる損害についても、一切の責任を負いかねます。
あらかじめご了承ください。


概要

SSL証明書の取得プロセスや、そこで使われる公開鍵・秘密鍵・共通鍵の役割について整理してみました。


🔄 外部CAが絡むSSL証明書取得の流れ(+公開鍵/共通鍵の視点つき)


① サーバーで CSR(証明書署名要求) を作成

ここで初めて「公開鍵と秘密鍵」のペアが作られます!

🔑【この時点での鍵の関係】

  • 公開鍵 → CSR に含める(あとで証明書として公開される)
  • 秘密鍵 → サーバーにだけ保存(誰にも渡さない!)

🧠 ポイント:この鍵ペアが「サーバーが本物だと証明される」ための基礎!


② 外部CAにCSRを提出(+ドメイン所有確認)

  • CSRをCAに送ると、CAは「この公開鍵は〇〇ドメインのサーバーですよ」と署名
  • これがいわゆるSSL証明書(=公開鍵付きの身分証明書)

📄 証明書にはこう書かれてます:

CN=www.example.com
PublicKey=XXXX...
発行元=Let's Encrypt

③ CAがSSL証明書を発行

  • CAの電子署名がついた「公開鍵の身分証明書」がサーバーに届く
  • これは誰に見せてもOKなファイル(中身は暗号化されてない)

📦 サーバーに今あるもの:

  • 🔐 秘密鍵(サーバーにだけある)
  • 📄 公開鍵入りの証明書(ブラウザに見せる)

④ サーバーに証明書をインストール(HTTPS対応)

  • サーバーは、証明書(公開鍵)と秘密鍵をセットで保持
  • これで、**HTTPS通信(=TLS通信)**ができる状態に!

⑤ 実際にHTTPS通信すると…

ここで「共通鍵」の出番です!

🔐 実際の通信の流れ(SSL/TLSの中で行われること):

  1. クライアント(ブラウザ)がサーバーに接続
  2. サーバーが証明書(公開鍵付き)を送る
  3. ブラウザがその公開鍵で「共通鍵」を暗号化して送る
  4. サーバーが秘密鍵でそれを復号して「共通鍵」を得る
  5. その後は、共通鍵で暗号化されたデータ通信(速くて軽い!)

🔑 ここでの鍵の役割まとめ

鍵の種類 説明 どこで使われる?
🔓 公開鍵 誰でも見られる鍵(証明書に含まれる) 共通鍵を暗号化して送る時に使う
🔒 秘密鍵 サーバーだけが持ってる鍵 公開鍵で暗号化された共通鍵を復号する
🗝️ 共通鍵 ブラウザとサーバーで共有して使う暗号鍵 実際のデータの暗号通信に使う(超高速)

🧠 イメージで言うと:

  • 公開鍵 → 郵便受けの鍵穴みたいなもの(誰でも投函OK)
  • 秘密鍵 → 鍵の持ち主だけが開けられる(郵便を読める)
  • 共通鍵 → 実際に会話するときの「共通の言語」

✅ 補足付きまとめ(全体の流れ)

[サーバー]
1. 公開鍵・秘密鍵ペアを作る
2. 公開鍵をCSRに入れてCAに送る

[CA]
3. 公開鍵に署名して証明書を発行

[サーバー]
4. 証明書+秘密鍵でHTTPS通信を始める

[クライアント]
5. 証明書を見て「信頼できる!」と判断
6. 共通鍵を作り、公開鍵で暗号化して送る
7. サーバーが秘密鍵で共通鍵を復号
8. あとは共通鍵で暗号通信スタート✨

素朴な疑問

https通信する際にクライアント側は意識しないでWebサーバと通信できているが、初回は毎回チェックをWebブラウザが実施しているのか?


✅ 結論:

毎回、通信先のWebサーバの証明書をチェックして、信頼できるか確認してから通信開始しています。

でもその処理がめちゃくちゃ高速に行われているので、人間の感覚では「一瞬で通信できた」と見えるだけなんです。


🔍 もうちょい具体的に:ブラウザがやってる証明書の確認処理

HTTPS通信を始めると、ブラウザ(クライアント)はこんなチェックをします👇

① サーバーから証明書を受け取る(公開鍵付き)

② ブラウザはこの証明書が本物か確認する:

  • ✔️ ドメイン名が一致しているか?(例:証明書は www.example.com 用か)
  • ✔️ 有効期限内か?
  • ✔️ **信頼できる認証局(CA)**が発行しているか?
  • ✔️ 中間証明書やルート証明書までちゃんと連鎖(証明書チェーン)しているか?
  • ✔️ (一部ブラウザでは)失効チェックもする(後述)

③ チェックOKなら、共通鍵のやりとりへ進む(TLSハンドシェイク)

→ この一連の流れが、一瞬のうちに裏側で行われているんです💨


⚠️ 補足:失効チェックって何?

証明書が途中で取り消された(漏洩や不正発行など)場合に備えて、

  • CRL(証明書失効リスト)
  • OCSP(Online Certificate Status Protocol)

という方法で「この証明書ってまだ有効?」って確認することがあります。

※ ただしこれは最近では高速化やプライバシーの観点で、ブラウザやOSによって実施方法に違いがあります。


🧠 なぜこんなに速く感じるの?

  • ブラウザやOSが一部のチェックをキャッシュしてることがある
  • サーバーとの接続がHTTP/2や再接続で最適化されてる
  • 現在のブラウザとマシン性能が速すぎて、人間が気づけないレベル

✅ 素朴な疑問の答え整理

質問 答え
毎回証明書のチェックしてるの? ✅ してます!(接続のたびに)
なぜ気づかないの? ⏱ 一瞬で終わる+高速化されてるから
チェック内容は? ドメイン名、有効期限、CA、チェーンなどを検証

おわりに

証明書の仕組みは一見ややこしく感じますが、「誰に見せる鍵(公開鍵)」「自分だけが持つ鍵(秘密鍵)」「実際に使う暗号の鍵(共通鍵)」という3つの役割が理解できると、通信の安全性の背景がクリアに見えてきます。

今回はChatGPTを活用しながら、SSL証明書の取得から通信確立の仕組みまでを整理しました。
今後また証明書更新やHTTPS構築に携わるときのリファレンスとして活用する予定です。

✨ おわりに

この記事が役立ったら、いいねやストックいただけると嬉しいです!


参考になりそうな文献

これ1冊で丸わかり 完全図解 セキュリティー入門
SSL/TLS徹底入門: わかりやすい図解解説 インターネット技術
サーバ/インフラエンジニアの基本がこれ1冊でしっかり身につく本


主のコンテンツ

Active Directoryの基礎※ハンズオン形式
Active Directoryの基礎 グループポリシー編※ハンズオン形式
情シスヘルプデスク入門※一部ハンズオン形式
X
Youtube

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?