它只显示证书的子集,我想知道它获取它们的标准,例如,我希望这些证书必须具有关联的私钥来证明客户的所有权。但是 Chrome 证书管理器拥有的证书比弹出窗口中显示的要多得多,其中一些证书具有关联的私钥。浏览器也有自己的独立存储,因为我注意到一些证书需要导入浏览器的存储,尽管浏览器存储中的证书与 Windows 上的相同。
certificate_authorities:可接受的 certificate_authorities 的可分辨名称 [X501] 列表,以 DER 编码格式表示。这些专有名称可以为根 CA 或从属 CA 指定所需的专有名称;因此,该消息可用于描述已知的根以及所需的授权空间。如果 certificate_authorities 列表是空的,那么客户端可以发送任何适当的 ClientCertificateType 的证书,除非有一些相反的外部安排。
HTTPS 客户端证书必须有对应的私钥,否则不能用于 HTTPS 客户端认证。
在 Windows 上(屏幕截图看起来像是在 Windows 上拍摄的)Chrome 确实使用了 Windows 证书管理器。HTTPS 身份验证的证书存储在个人证书存储区(参考资料中的“个人”部分
certmgr.msc
)。此外,您尝试连接的 HTTPS 服务器可以在其
Certificate Request
消息中发送它将接受用于客户端证书身份验证的 CA 列表:引用自rfc5246
虽然大多数 HTTPS 站点使用网站发送的证书向服务器进行身份验证,但 HTTPS 还支持称为双向身份验证的双向身份 验证。
为了请求相互身份验证,服务器
CertificateRequest
在 HTTPS 握手期间向客户端发送消息,指定浏览器将用于查找满足服务器请求的客户端证书的条件过滤器。如果浏览器发现多个可能的证书(具有
Client Authentication
目的集和可用私钥的未过期证书)与服务器提供的过滤条件匹配,它将要求用户选择一个。这通常是非常罕见的情况(至少对我来说)。选择的证书将通过浏览器的以下
Certificate
响应发送到服务器。