1. ホーム

[解決済み】ssl証明書はどのように検証されるのですか?

2022-04-05 05:14:08

質問

ssl証明書を安全に検証するために必要な一連の手順は何ですか? 私の(非常に限られた)理解では、https のサイトにアクセスすると、サーバーはクライアント(ブラウザ)に証明書を送信し、ブラウザはその証明書から証明書の発行者情報を取得し、それを使って発行者に連絡し、何らかの方法で証明書の有効性を比較する、というものだと思います。

  • 具体的にはどのように行われるのですか?
  • 中間者攻撃から保護される理由は何ですか?
  • 中間者攻撃に使用するために、どこかのランダムな人物が独自の検証サービスを立ち上げて、すべてが安全に見えるようにすることを防ぐにはどうしたらよいでしょうか?

解決方法は?

ここでは、非常に簡略化して説明します。

  1. Webブラウザは、Webサーバーの公開鍵を含むWebサーバーの証明書をダウンロードします。 この証明書は、信頼できる認証局の秘密鍵で署名されています。

  2. お使いのウェブブラウザには、主要な認証局の公開鍵がインストールされています。 この公開鍵を使用して、Webサーバーの証明書が本当に信頼できる認証局によって署名されているかどうかを確認します。

  3. 証明書には、Webサーバーのドメイン名やIPアドレスが記載されています。 ブラウザは、証明書に記載されたアドレスが、接続可能なアドレスであることを認証局に確認します。

  4. ブラウザは、HTTPトラフィックを暗号化するために使用される共有対称鍵を生成します。 ブラウザは対称鍵をウェブサーバーの公開鍵で暗号化して送り返し、ウェブサーバーだけがその秘密鍵を持っているので、ウェブサーバーだけが復号化できることを保証します。

なお、中間者攻撃を防ぐには、認証局(CA)が不可欠です。 しかし、署名されていない証明書であっても、共有された対称鍵にアクセスする方法がないため、誰かがあなたの暗号化されたトラフィックを受動的に盗聴することを防ぐことができます。