デベロッパーが HTTPS に移行する際に直面する 2 つの課題は、コンセプトと用語です。このガイドでは、その両方について簡単に説明します。
まとめ
- 公開鍵/秘密鍵を使用して、ブラウザとサーバー間でメッセージに署名し、復号する。
- 認証局(CA)は、公開鍵と公開 DNS 名(「www.foobar.com」など)間のマッピングを保証する組織です。
- 証明書署名リクエスト(CSR)は、公開鍵と、鍵を所有するエンティティに関するメタデータをバンドルしたデータ形式です。
公開鍵と秘密鍵のペアとは
公開鍵/秘密鍵のペアは、暗号鍵と復号鍵として使用され、特別な数学的関係を共有する非常に大きな数字のペアです。鍵ペアの一般的なシステムは、RSA 暗号です。公開鍵はメッセージを暗号化するために使用され、メッセージは対応する秘密鍵でしか復号できません。ウェブサーバーは公開鍵を世界中にアドバタイズし、クライアント(ウェブブラウザなど)はそれを使用して、サーバーに安全なチャネルをブートストラップします。
認証局とは
認証局(CA)とは、公開鍵と公開 DNS 名(「www.foobar.com」など)のマッピングを保証する組織です。たとえば、特定の公開鍵が www.foobar.com の true の公開鍵かどうかをクライアントが知るにはどうすればよいでしょうか。先見的に知る方法はありません。CA は、CA 独自の秘密鍵を使用してウェブサイトの公開鍵に暗号方式で署名することで、特定の鍵が特定のサイトの真の鍵であると保証します。この署名は、偽造は計算上不可能です。ブラウザ(およびその他のクライアント)は、既知の CA が所有する公開鍵を含むトラスト アンカー ストアを維持し、これらの公開鍵を使用して CA の署名を暗号的に検証します。
X.509 証明書は、公開鍵と、鍵を所有するエンティティに関するメタデータをバンドルしたデータ形式です。ウェブの場合、鍵の所有者はサイトの運営者であり、重要なメタデータはウェブサーバーの DNS 名です。クライアントが HTTPS ウェブサーバーに接続すると、ウェブサーバーはクライアントが検証できるように証明書を提示します。クライアントは、証明書の有効期限が切れていないこと、DNS 名がクライアントが接続しようとしているサーバーの名前と一致していること、既知のトラスト アンカー CA が証明書に署名していることを確認します。ほとんどの場合、CA はウェブサーバー証明書に直接署名しません。通常は、トラスト アンカーを中間の署名者または署名者、そして最終的にウェブサーバー独自の証明書(エンド エンティティ)にリンクする証明書チェーンがあります。
証明書署名リクエストとは何ですか?
証明書署名リクエスト(CSR)は、証明書と同様に、鍵を所有するエンティティに関するメタデータと公開鍵をバンドルするデータ形式です。ただし、クライアントでは CSR が解釈されません。CA は解釈されます。ウェブサーバーの公開鍵の保証を CA に求める場合は、CA に CSR を送信します。CA は CSR 内の情報を検証し、それを使用して証明書を生成します。その後、CA から最終的な証明書が送信され、ユーザーはその証明書(多くの場合は証明書チェーン)と秘密鍵をウェブサーバーにインストールします。