我正在使用 Tomcat 为我的项目设置证书身份验证。它适用于 cURL 等命令行客户端。
我在 Chrome 浏览器中安装了很多客户端证书。一些用于连接到我的站点,另一些用于不同的目的,与我的项目无关。
每次我连接到我的站点时,Chrome 都会显示一个客户端证书列表供选择。这些正是我安装的证书,而不是其他证书。我的问题是:
- Chrome 如何知道要为网站提供哪些客户端证书以供选择?
- Tomcat 将这些客户端证书存储在其信任库中。期间 SSL 握手,Tomcat 将请求客户端证书。可以 请求它在其信任中知道的一些特定证书 存储以便 Chrome 知道要显示什么?
最佳答案
客户端证书认证在浏览器实现的SSL/TLS协议(protocol)的握手阶段决定。
如果服务器需要客户端证书认证(它是 可选),向客户端发送一条消息,其中包含已接受的列表 证书颁发机构 (CA)。如果服务器接受任何,则可以为空 证书。
客户端选择安装在客户端 keystore 中的证书,这些证书由任何这些 CA 颁发,并将列表呈现给用户。对于 Chrome,浏览器会从操作系统的 keystore 中选择用户安装的证书。
用户选择一个证书,客户端用证书的私钥对握手过程中交换的已知数据进行签名。
在第 2 步中只能选择带有私钥的证书。这是浏览器不选择安装在您设备中的受信任 CA 的证书的原因。您不拥有私钥
关于google-chrome - Chrome 浏览器如何知道要提示站点的客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40847638/