我正在使用Tomcat为我的项目设置证书身份验证。它适用于命令行客户端,例如cURL。
我在Chrome浏览器中安装了许多客户端证书。有些用于连接到我的网站,其他用于不同目的,与我的项目无关。
每次我连接到我的网站时,Chrome都会显示一个客户端证书列表供您选择。这些正是我安装的证书而不是其他证书。我的问题是:
答案 0 :(得分:22)
客户端证书身份验证在浏览器实现的SSL / TLS协议的握手阶段进行规则。
如果服务器需要客户端证书身份验证(确实如此) 可选),使用接受列表向客户端发送消息 证书颁发机构(CA)。如果服务器接受任何操作,则无效 证书。
客户端选择客户端密钥库中安装的证书,这些证书已由任何这些CA颁发,并将列表提供给用户。对于Chrome,浏览器会从操作系统密钥库中选择用户安装的证书。
用户选择一个证书,客户端使用证书的私钥通过握手期间互换的已知数据执行签名。
在步骤2中,只能选择具有私钥的证书。这是因为浏览器未选择设备中安装的可信CA的证书。您没有私钥