3

我有一个托管需要客户端证书的 SSL 网站的 W2K8 R2 SP1 服务器。我们有一个根证书(自签名),保存在本地机器受信任的 CA 存储中。在客户端,浏览器要求提供客户端证书,并且工作正常。

现在,我们有另一个根证书,它也保存在本地机器受信任的 CA 存储中。问题是浏览器不提供选择由该根 CA 颁发的客户端证书。

浏览器不提示的原因是服务器已配置(默认选项)向客户端返回受信任的根 CA 列表,以帮助它限制可供选择的客户端证书列表。如果我们将服务器配置为不提供此列表(HKLM/system/currentcontrolset/control/securityproviders/schannel/sendtrustedissuerlist=0),则浏览器没有线索并显示所有客户端证书,然后它就可以正常工作。

过去我们遇到过这样的问题,因为受信任的 CA 列表太长,因此在返回给客户端时被截断,但这里不是这种情况,只返回 8 个受信任的 CA。

此外,如果我在另一个(非常相似的)服务器上注册这个新的根 CA,它可以正常工作,返回的受信任列表包含新的 CA。

我真的不知道为什么这个特定的服务器在 SSL 协商期间拒绝在列表中返回我的根 CA,有人可以帮忙吗???

4

1 回答 1

3

不确定这是否对您或其他人有帮助,但根据 Microsoft 及其 Windows Server 2012 文档,您的问题似乎与此有关:

“如果使用的受信任的根证书颁发机构存储包含根(自签名)和证书颁发机构 (CA) 颁发者证书的混合,则默认情况下仅将 CA 颁发者证书发送到服务器”。

请记住,您可以为“证书信任列表”(CTL)使用不同的存储。“客户端身份验证颁发者”存储首先被检查/使用(默认情况下在 Windows Server 2012 上),然后如果为空“受信任的根证书颁发机构”存储。

如果您在 2012 年,您可以手动配置 CTL 存储,但我认为 2008 R2 上不存在该选项(尽管我可能弄错了)。

于 2015-02-18T23:40:24.713 回答