StackExchangeのサーバー証明書を見ると([ロック]アイコンをクリックして)、次のように表示されます。
この証明書は、次の目的で使用されます。
リモートコンピューターのIDを保証します。
リモートコンピューターに身元を証明します。
サーバー証明書にはサーバーの公開鍵が含まれているので、クライアントに確実にアイデンティティを提供できると思いました。
では、どのようにしてクライアントの身元を確認することもできますか?
表示されるのは、証明書isの使用方法ではなく、証明書canの使用方法です。この証明書は使用することができ、クライアントに対してサーバーを認証するためにも使用されます。サーバーに対してクライアントを認証するためのクライアント証明書として使用することもできますが、現在はそのようには使用されていません。
サーバーとクライアントの認証に同じ証明書を使用すると、システム/アプリケーションがクライアントとサーバーの両方の役割を担うことができる場合に役立ちます。これは、たとえば、2つのメールサーバー間でメールを転送する場合、またはSIP(VoIP)デバイスが相互に通信する場合(コールは両方で作成される場合があります)の場合です。
クライアントの検証方法を理解するには、TLSのしくみについて少し理解する必要があります。例としてhttps://security.stackexchange.comへのhttps接続を使用してみましょう:
私は https://security.stackexchange.com に接続し、 Digicert Inc によって署名された証明書を送信されます-そして、私が送信したstackexchangeのキー-ドメイン stackexchange.comに属しています。
私はstackexchangeの公開鍵を使用してデータを暗号化し、セッションを暗号化する対称鍵を作成するために送信します。これにより、結果のキーが危険にさらされることがなくなります。
Stackexchangeだけが、公開鍵で暗号化された私が送信したデータを復号化できます-それらは対応する秘密鍵を持っています。
対称鍵暗号化セッションが開始されると、stackexchangeの公開鍵は使用されなくなります。
SO:結果は対称キーのペアです:私は1つ持っており、stackexchangeは同じものを持っています。これらのキーは、データを渡すときにstackexchangeの公開キーを使用して構築されたため、stackexchangeと通信すると、[〜#〜] only [〜#〜] meになる可能性があります-stackexchangeの秘密キーがどういうわけか致命的な妥協。
Digicertが公開鍵を含む証明書を承認したため、stackexchangeが stackexchange とのやり取りの最初にあったと確信できました。 Stackexchangeはそれが me であることを確認できました。信頼できる公開キーを使用して対称キーを構築するために渡したキーマテリアルを保護するために公開キーを使用したからです真ん中の誰もが今使用している対称鍵を導出できないことを保証します。