客户端证书:无法使用权​​限为 SSL/TLS 建立安全通道(再次!)

Client certificate: Could not establish secure channel for SSL/TLS with authority (Again!)

很抱歉问这个问题,但我在 Stack 上找不到任何关于我的案例的答案。

我开发了一个使用 WCF 与外部 SOAP api 对话的客户端应用程序。为了进行身份验证,应用程序使用客户端证书。 (安装在服务器上的客户端证书)。当我在本地机器上测试时,一切正常。

当我在 IIS 上(在 EC2 上)部署应用程序时出现问题。应用程序无法再与 SOAP api 通信。这是错误:

"Could not establish secure channel for SSL/TLS with authority".

我在当前用户和本地计算机位置的个人存储中安装了证书。当我尝试使用浏览器访问 SOAP api 时,它可以正常工作(获取还需要客户端证书的 wsdl 文件)。

注意:证书不是自签名的。它是由授权的 CA 创建的。

感谢帮助

我把IIS的应用程序池Identity改成了LocalSystem,然后重启了应用。我认为这是一个权限问题。如果有人能向我解释为什么它解决了这个问题,我会接受 her/his 答案。

证书存储只能由管理员访问。 IUSER 的本地 iis 用户没有管理员权限,因此您收到了该证书错误。将应用程序池标识更改为 LocalSystem 解决了您的问题,因为 LocalSystem 可以访问 Certificate STore。

另一个最佳解决方案是只允许 IUSER 访问证书。 (通过这样做,您已授予特定访问权限,这与对应用程序池的完全管理员访问权限不同)。

要做到这一点,请前往 证书控制台 -> 右键单击​​证书 -> 所有任务 -> 管理私钥 -> 添加 IUSER 然后单击确定。

试试这个。

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;