我花了一整天时间使用相互HTTPS来诊断测试服务的问题.服务在运行
Windows Server 2008 Enterprise Edition的测试服务器上的IIS 7中托管.
突然几周前,所有测试服务都停止工作,对这些服务的任何请求都以403.7“需要客户端证书”问题结束.经过大量搜索后,我发现this article描述了与Windows Server 2003类似的问题.
简而言之,问题是由本地计算机证书存储中安装的过多受信任的根CA引起的.相互HTTPS握手期间的服务器将可信CA的“列表”发送到客户端,客户端可以根据此列表选择证书(除非IIS中的站点配置了CTL,但是适用于a different question).问题是列表只能有16KB,所以如果有更多的CA,它们就不会发送到客户端.如果使用的客户端证书是由其中一个截断的CA颁发的,则不会将其发送到服务器.
之后,我检查了本地机器的受信任的根证书存储,我发现安装了200多个受信任的根CA.更糟糕的是:我们没有安装它们!我在某处找到了一些信息(抱歉找不到它),这些CA是通过Windows Update自动安装的.
我不认为它们都是由Windows Update安装的,老实说.可能会有更多的人遇到这个问题,对吧?
原文链接:https://www.f2er.com/windows/367120.html它们也可以通过GPO和域成员身份安装,这是我首先看到的地方.
但是,在查看之前,我想允许使用HTTPS …(可能,除非您怀疑或知道您在那里有恶意CA信任),这最容易通过删除您不想要的那些来完成. Certificate Manager Tool,以及GPO的启动或关闭脚本部分中的脚本删除.
它们也可以被恶意安装,如果是这种情况,你就会受到严重破坏,我建议您需要开始将每台使用恶意证书的计算机作为可信任CA进行擦除.