很抱歉提出这个问题,但我无法在Stack上找到任何答案。
我开发了一个客户端应用程序,它使用WCF与外部SOAP API进行通信。要进行身份验证,应用程序使用客户端证书。 (已在服务器上安装的客户端证书)。当我在我的本地机器上测试时,一切正常。
在IIS上(在EC2上)部署应用程序时会出现问题。应用程序无法再与SOAP api通信。这是错误:
"Could not establish secure channel for SSL/TLS with authority".
我在当前用户和本地计算机位置的Personnal商店中安装了证书。当我尝试使用浏览器点击SOAP api时它可以工作(获取wsdl文件,该文件也需要客户端证书)。
注意:证书不是自签名的。它由授权的CA创建。
感谢您的帮助
答案 0 :(得分:5)
证书存储区只能由管理员访问。 IUSER
的本地iis用户没有管理员权限,因此您获得了该证书错误。将应用程序池标识更改为LocalSystem解决了您的问题,因为LocalSystem可以访问证书库。
另一个最佳解决方案是仅允许证书访问IUSER。 (通过这样做,您提供了一个特定的访问权限,而不像完全管理员访问应用程序池)。
要做到这一点去
证书控制台 - >右键单击证书 - >所有任务 - >管理私钥 - >添加IUSER
,然后点击确定。
答案 1 :(得分:1)
我将IIS的应用程序池的标识更改为LocalSystem并重新启动了应用程序。我认为这是一个许可问题。如果有人能解释我解决问题的原因,我会接受她/他的回答。
答案 2 :(得分:1)
尝试一下。
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;