web-dev-qa-db-ja.com

どのようにChromeブラウザはサイトのプロンプトを出すクライアント証明書を知っていますか?

Tomcatを使用してプロジェクトの証明書認証を設定しています。 cURLなどのコマンドラインクライアントでは正常に機能します。

Chromeブラウザに多くのクライアント証明書をインストールしています。自分のサイトへの接続に使用しているものもありますが、プロジェクトとは関係なく異なる目的で使用しているものもあります。

サイトに接続するたびに、Chromeは選択するクライアント証明書のリストを提示します。これらは、私がインストールした証明書であり、他の証明書ではありません。私の質問は次のとおりです。

  1. どのようにChrome=が選択のためにサイトに提示するクライアント証明書を知っていますか?
  2. Tomcatは、それらのクライアント証明書をトラストストアに保存します。 SSLハンシェイク中、Tomcatはクライアント証明書を要求します。 Chromeが何を表示するかを知っているように、信頼できるストアで知っている特定の証明書を要求しますか?
18
System

クライアント証明書認証は、ブラウザーによって実装されるSSL/TLSプロトコルのハンドシェイクフェーズでルールが設定されます。

  1. サーバーがクライアント証明書認証を必要とする場合(オプション)、受け入れられた認証局(CA)のリストとともにクライアントにメッセージを送信します。サーバーが証明書を受け入れる場合は無効にできます。

  2. クライアントは、これらのCAのいずれかによって発行されたクライアントキーストアにインストールされている証明書を選択し、リストをユーザーに提示します。 Chromeの場合、ブラウザーは、ユーザーがインストールした証明書をオペレーティングシステムキーストアから選択します。

  3. ユーザーが証明書を選択すると、クライアントはハンドシェイク中に交換された既知のデータに対して証明書の秘密キーで署名を実行します。

手順2で選択できるのは秘密キー付きの証明書のみです。これは、ブラウザーがデバイスにインストールされている信頼できるCAの証明書を選択しないためです。あなたは秘密鍵を所有していません

24
pedrofb