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