Chrome浏览器如何知道要为网站提示的客户端证书?

时间:2016-11-28 15:14:15

标签: google-chrome authentication ssl tomcat7 client-certificates

我正在使用Tomcat为我的项目设置证书身份验证。它适用于命令行客户端,例如cURL。

我在Chrome浏览器中安装了许多客户端证书。有些用于连接到我的网站,其他用于不同目的,与我的项目无关。

每次我连接到我的网站时,Chrome都会显示一个客户端证书列表供您选择。这些正是我安装的证书而不是其他证书。我的问题是:

  1. Chrome如何知道哪些客户端证书可供网站选择?
  2. Tomcat将这些客户端证书存储在其信任库中。中 SSL hanshake,Tomcat将请求客户端证书。可以 请求其在其信任中知道的某些特定证书 存储,以便Chrome知道要显示什么?

1 个答案:

答案 0 :(得分:22)

客户端证书身份验证在浏览器实现的SSL / TLS协议的握手阶段进行规则。

  1. 如果服务器需要客户端证书身份验证(确实如此) 可选),使用接受列表向客户端发送消息 证书颁发机构(CA)。如果服务器接受任何操作,则无效 证书。

  2. 客户端选择客户端密钥库中安装的证书,这些证书已由任何这些CA颁发,并将列表提供给用户。对于Chrome,浏览器会从操作系统密钥库中选择用户安装的证书。

  3. 用户选择一个证书,客户端使用证书的私钥通过握手期间互换的已知数据执行签名。

  4. 在步骤2中,只能选择具有私钥的证书。这是因为浏览器未选择设备中安装的可信CA的证书。您没有私钥