【セキュリティ】サーバー証明書の仕組み・証明書チェーンとは
はじめに
私たちがWebサイトにアクセスしたとき、ブラウザのアドレスバーに表示される鍵マークはサーバー証明書を認識し、認証されていることの証明です。
しかし、このサーバー証明書は単独で信頼されているわけではありません。
実は、複数の証明書が連なって“証明書チェーン(信頼チェーン)”を作っているのです。
この記事では、この証明書チェーンの構造と役割についてわかりやすくまとめていきます。
サーバー証明書を支える“3つの証明書”
HTTPS通信では、3つの証明書が階層構造を作っています。
① サーバー証明書(エンドエンティティ証明書)
サーバー(Webサイト)が持っている証明書のことを指します。
(例)www.example.com
に対応する証明書
この証明書にはサーバーの「公開鍵」や「ドメイン名」などが含まれます。
この証明書を使って、暗号化通信や本人確認を行ないます。
② 中間証明書(中間CA)
サーバー証明書を発行した認証局の証明書のことを指します。
中間証明書は「ルート認証局」から証明書を発行されており、代理でサーバー証明書を発行します。
この中間証明書があることで、ルート認証局の信頼を間接的に引き継げます。
③ ルート証明書(ルートCA)
OSやブラウザにあらかじめ組み込まれている最上位の信頼元のことを指します。
世界中の信頼の起点となる存在(例:DigiCert、GlobalSign、Let's Encrypt など)で、ブラウザはこのルート証明書を無条件に信頼しています。
証明書チェーン(信頼チェーン)とは?
この3つの証明書が「信頼の鎖(チェーン)」のようにつながっている状態を 証明書チェーン と呼びます。
ルート証明書 → 中間証明書 → サーバー証明書
このように、右の証明書は、ひとつ左の証明書に署名されることで「信頼できる」と判断される仕組みになっています。
(例)ユーザーが https://example.com
にアクセス
① サーバーは、以下の証明書をブラウザに送信
・サーバー証明書
・中間証明書(必要な場合、複数含まれることも)
② ブラウザはサーバー証明書を検証
③ 中間証明書で署名されているかを確認
④ 中間証明書が、ルート証明書で署名されているかを確認
⑤ 最後に、ルート証明書が自分の中に存在するか(=信頼できるか)を確認
→ この信頼の連鎖がすべてOKなら「鍵マーク」が表示され、安全な通信が確立されます。
ブラウザは、サーバー証明書を受け取ったあと、その証明書を誰が発行したかを見ます(=中間証明書)。
中間証明書の発行者をさらに確認(=ルート証明書)し、そのルート証明書が信頼リスト(OSやブラウザ)に入ってるか?をチェックします。
そして入っていれば信頼OKということで鍵マークが表示されます。
ルート証明書は極めて大事な存在のため、普段はオフラインで厳重に保管されています。
ルート証明書の秘密鍵が漏れたら、インターネット全体の安全性が崩壊しかねません。
そのため、安全性と柔軟性を両立させるために、間に中間証明書をはさみ、実務の証明書発行は中間CAが行なうようにしています。
まとめ
サーバー証明書の信頼は「単体」ではなく、「チェーン」で構築されています。
ルート → 中間 → サーバー の3段階で信頼が連鎖しており、中間証明書は、安全性と運用性のバランスを取るために重要です。
私たちが見ているURL欄に表示される鍵マークの表示は、このチェーンがすべて正しくつながっている証ということです。
最後までお読みいただき、ありがとうございました。
参考URL
Discussion