Chrome 显示可用于客户端身份验证的证书的标准是什么

Chrome 显示可用于客户端身份验证的证书的标准是什么

当远程服务器需要客户端证书进行身份验证时,浏览器会弹出一个对话框来选择证书:

在此处输入图片描述

它只显示了证书的一个子集,我想知道它根据什么标准获取这些证书,例如,我希望这些证书必须具有关联的私钥来证明客户端的所有权。但是 Chrome 证书管理器拥有的证书比弹出窗口中显示的要多得多,其中一些证书具有关联的私钥。浏览器也有自己的独立存储,因为我注意到一些证书需要导入到浏览器的存储中,尽管浏览器存储中的证书与 Windows 上的证书相同。

答案1

HTTPS 客户端证书必须有对应的私钥,否则不能用于 HTTPS 客户端身份验证。

在 Windows 上(屏幕截图看起来像是在 Windows 上拍摄的),Chrome 确实使用了 Windows 证书管理器。HTTPS 身份验证的证书存储在个人证书存储区中(中的“个人”部分certmgr.msc)。

此外,您尝试连接的 HTTPS 服务器可以在其Certificate Request消息中发送它将接受客户端证书身份验证的 CA 列表:

引自rfc5246

certificate_authorities:可接受的证书颁发机构的专有名称 [X501] 列表,以 DER 编码格式表示。这些专有名称可以为根 CA 或下属 CA 指定所需的专有名称;因此,此消息可用于描述已知根以及所需的授权空间。如果证书颁发机构列表为空,则客户端可以发送任何适当的 ClientCertificateType 证书,除非有相反的外部安排。

答案2

虽然大多数 HTTPS 网站使用网站发送的证书向服务器进行身份验证,但 HTTPS 还支持双向身份验证,称为 相互认证

为了请求相互认证,服务器CertificateRequest 在 HTTPS 握手期间向客户端发送一条消息,指定浏览器将用来查找满足服务器请求的客户端证书的标准过滤器。

如果浏览器发现有多个可能的证书(未过期且Client Authentication设置了用途并有可用的私钥的证书)符合服务器提供的过滤条件,它会要求用户选择一个。这种情况通常很少发生(至少对我来说是这样)。

所选的证书将通过浏览器的以下响应发送到服务器Certificate

相关内容