ssl - 服务器未将来自 CA 受信任列表的证书返回给客户端

标签 ssl certificate ssl-certificate

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

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

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

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

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

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

最佳答案

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

“如果使用的Trusted Root Certification Authorities存储包含根(自签名)和证书颁发机构 (CA) Issuer 证书的混合,则只有 CA Issuer 证书将被发送到默认服务器”。

请记住,您可以为“证书信任列表”(CTL) 使用不同的商店。首先检查/使用“Client Authentication Issuer”存储(默认情况下在 Windows Server 2012 上),然后如果为空,则检查/使用“Trusted Root Certification Authorities”存储。

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

关于ssl - 服务器未将来自 CA 受信任列表的证书返回给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077120/

相关文章:

java - 如果服务器不支持所使用的协议(protocol),JSSE 是否会实现回退?

certificate - SAML:为什么证书位于签名中?

java - 如何将 .p12 或 pem 证书导入 java keystore ?

linux - 如何将 SSL 应用于每个页面?

web-services - Maven 中的 SSL 客户端证书

https - 让我们加密错误 "urn:acme:error:unauthorized"

visual-studio-2010 - tfs 2010、Visual Studio 2010 和使用自签名证书的 HTTPS

apache - openssl 无法获取本地颁发者证书 debian

encryption - 在 ssl key 交换期间,如何在 wireshark 中查看加密 key ?

ssl - 不能信任 ubuntu 18.04.2 LTS 中的开发 https 自签名证书