为什么 Windows 有存储中间 SSL 证书的地方?

信息安全 tls 证书
2021-08-16 13:29:39

据我了解验证远程计算机 SSL 证书的过程,远程系统发送其“叶”证书和任何中间证书,但不发送根证书。执行此openssl命令显示根证书不是由远程服务器发送的:

openssl s_client -showcerts -connect www.stackoverflow.com:443

然后,客户端负责检查叶证书是否确实由第一个中间证书签名,第一个中间证书是否由第二个中间证书签名,依此类推。最终,检查远程系统提供的最后一个证书上的签名,以验证它是由已经被信任的根证书签名的——即,已经在“信任库”中。

那么问题来了:作为客户,您为什么要存储中间证书?Windows 证书存储区有一个指定用于存储“中间证书颁发机构”的区域。它是干什么用的?是否存在需要存储中间证书的情况?

4个回答

我相信你的理解是正确的。我认为 Windows 存储中间体是因为:

1)拥有中间证书的本地副本允许它“应对”远程服务器未正确链接的连接场景。我见过 Web 服务器配置不正确但 IE 没有抱怨的情况。

2) 证书用于其他基于 Windows 的工具。例如,当使用该Crypto Shell Extensions程序分析证书时,有一个“证书路径”选项卡试图显示完整的链(恕我直言,并非总是准确)。

3) 它允许工作站在需要时执行基于服务器的 SSL 角色(例如,如果您要安装一些具有 Web 界面的本地软件)。

4) 它可能允许 Windows、IE 或任何其他利用证书存储的设备拥有一个用于证书固定的可信参考点。我不确定Windows实际上在多大程度上做到了这一点。

我只能猜测它是为了启用经常使用的证书的缓存,这样就不会为最终实体证书查询和下载 AIA

可能还想验证代码签名的离线机器。

对于客户端和浏览器,我不确定为什么 Windows 需要存储中间证书。

但是,对于 IIS 服务器,Microsoft 已记录如果您希望在 TLS 握手期间发送中间证书,则需要安装中间证书。

请参阅https://support.microsoft.com/en-us/help/954755/how-to-configure-intermediate-certificates-on-a-computer-that-is-runni