サーバーには、プライベートキーと公開キーで構成される証明書があります。サーバーは秘密鍵を決して提供しませんが、誰もが公開鍵を取得する可能性があります。公開鍵は、証明書コンテナ形式に埋め込まれています。この形式には、サーバーのIPアドレスまたはドメイン名、このIPアドレス/ドメイン名の所有者、所有者の電子メールアドレスなどが含まれます。
すべてが信頼できる機関によって署名されています。信頼できる機関、すなわち認証局(CA)もまた、秘密/公開鍵のペアを有する。証明書を渡し、コンテナ内の情報が正しいことを確認し、秘密鍵で署名し、アクセスできるのは彼らだけです。
CAの公開鍵は、デフォルトではユーザシステムにインストールされていますが、よく知られているCAはすでにお気に入りのOSまたはブラウザのデフォルトインストールに含まれています。
ユーザーがサーバーに接続すると、サーバーは秘密キーを使用してデータに署名し、署名されたデータを公開キーと共にパックし、すべてをクライアントに送信します。
クライアントは現在何をすることができますか?まず、署名されたデータを検証するために送信したばかりの公開鍵を使用することができます。秘密鍵の所有者だけが、公開鍵が署名を検証できるような方法でデータに正しく署名することができるため、このデータに署名した人は誰でも、受信した公開鍵に秘密鍵を所有している。これまでのところうまくいきました。しかし、ハッカーがパケットを傍受し、署名されたデータを別の証明書を使用して署名したデータで置き換え、公開鍵を公開鍵で置き換えるのは何ですか?何もない。
署名されたデータが検証された後(または検証前に)、クライアントは受信した公開鍵が有効なCA署名を持っていることを確認します。既にインストールされている公開CA鍵を使用して、受信した公開鍵が既知のCAによって署名されていることを検証します。さもなければ、それは拒否されます(ハッカーは途中でそれを置き換えたかもしれません)。
最後に、公開鍵コンテナ内の情報をチェックします。 IPアドレスまたはドメイン名は、クライアントが現在話しているサーバのIPアドレスまたはドメイン名と実際に一致していますか?そうでなければ、何か怪しいです!
ハッカーが自分の鍵ペアを作成するだけで、ドメイン名またはIPアドレスを証明書に入れることを止めるのは何ですか?簡単に:彼がそれをするなら、彼の鍵に署名するCAはない。 CA署名を取得するには、実際にこのIPアドレスまたはドメイン名の所有者であることを証明する必要があります。ハッカーは、彼がそれを証明することはできません、彼は署名を取得しませんではありません。だからこれはうまくいきません。
さて、ハッカーは自分のドメインを登録し、そのドメインの証明書を作成し、CAによって署名されていますか?これは動作します、彼はそれがCAの署名を取得します、それは彼のドメイン、問題ありません。しかし、彼はあなたの接続をハッキングするときにこれを使うことはできません。彼がこの証明書を使用すると、ブラウザは署名された公開鍵がexample.netのドメインであることを直ちに認識しますが、現在同じドメインではなくexample.comと話しています。
良い答え!しかし、別の関連する質問があります... 引用: "よく知られているCAは、お気に入りのOSまたはブラウザのデフォルトインストールに既に含まれています。" ブラウザが既定の既知のCAをどのように展開するのだろうか?それはWebサービスに対して自動チェックされますか?それとも、次のバージョンのブラウザリリースでのみ有効ですか? – forestclown
CA証明書は、ブラウザまたはOSとともに出荷されます。 Firefox、Chrome、Operaには、独自のCA証明書コピーが含まれています。Internet ExplorerとSafariは、WindowsまたはOS XにインストールされたCA証明書を使用します。ブラウザは、独自のコピーとOSワイド証明書を使用できませんそれ)。ブラウザを更新したり、OSをアップデートしたり、手動でインストールしたりするだけで、新しいCA証明書を入手できます(ダウンロードしてからブラウザまたはOSに追加することも可能です)。 – Mecki
ブラウザがオンラインでチェックできるのは、CA証明書がまだ有効かどうかだけです。すべてのCAサービスは証明書失効サーバーを実行します。このサーバーでは、特定の証明書がまだ有効か無効になっているかどうかをブラウザが確認できます。これは、OCSPプロトコルを介して行われます。http://tinyurl.com/pcjk2証明書には、問い合わせるOCSPサーバーのアドレスが含まれています。 – Mecki