google-chrome - Chrome 浏览器如何知道要提示站点的客户端证书?

标签 google-chrome authentication ssl tomcat7 client-certificates

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

我在 Chrome 浏览器中安装了很多客户端证书。一些用于连接到我的站点,另一些用于不同的目的,与我的项目无关。

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

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

最佳答案

客户端证书认证在浏览器实现的SSL/TLS协议(protocol)的握手阶段决定。

  1. 如果服务器需要客户端证书认证(它是 可选),向客户端发送一条消息,其中包含已接受的列表 证书颁发机构 (CA)。如果服务器接受任何,则可以为空 证书。

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

  3. 用户选择一个证书,客户端用证书的私钥对握手过程中交换的已知数据进行签名。

在第 2 步中只能选择带有私钥的证书。这是浏览器不选择安装在您设备中的受信任 CA 的证书的原因。您不拥有私钥

关于google-chrome - Chrome 浏览器如何知道要提示站点的客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40847638/

相关文章:

css - 使用 SSL 将 CSS 资源插入经典 Domino Web 开发页面

javascript - 通知弹出窗口不会出现在 chrome 中

google-chrome - 应用程序或扩展程序可以在具有 "<all_urls>"权限的系统上打开文件吗?

azure - 通过 Web api 对 Azure AD 中的用户进行身份验证?

Java EE 安全性 - 登录后不重定向到初始页面

AWS EC2 上的 Java Web 服务 SSL?

php - 尝试使用 SwiftMailer : Connection could not be established with host smtp. gmail.com [#0] 通过 Symfony 2 发送电子邮件

javascript - getNextPage 后 Chrome 中的 Backbone 分页滚动问题

javascript - DOMCharacterDataModified 未在 Firefox 和 Chrome 中一致触发。谁是正确的?

authentication - 操作的 AuthorizeAttribute