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

时间:2017-03-29 16:10:05

标签: .net wcf ssl soap tls1.2

很抱歉提出这个问题,但我无法在Stack上找到任何答案。

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

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

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

我在当前用户和本地计算机位置的Personnal商店中安装了证书。当我尝试使用浏览器点击SOAP api时它可以工作(获取wsdl文件,该文件也需要客户端证书)。

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

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

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

另一个最佳解决方案是仅允许证书访问IUSER。 (通过这样做,您提供了一个特定的访问权限,而不像完全管理员访问应用程序池)。

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

enter image description here

enter image description here

答案 1 :(得分:1)

我将IIS的应用程序池的标识更改为LocalSystem并重新启动了应用程序。我认为这是一个许可问题。如果有人能解释我解决问题的原因,我会接受她/他的回答。

答案 2 :(得分:1)

尝试一下。

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