.net 客户端证书:无法为具有权限的SSL/TLS建立安全通道(再次!)
很抱歉问这个问题,但我在Stack上找不到任何关于我的案例的答案 我开发了一个客户端应用程序,它使用WCF与外部SOAP api进行对话。为了进行身份验证,应用程序使用客户端证书。(服务器上已安装的客户端证书)。当我在本地机器上测试时,一切正常 在IIS(EC2)上部署应用程序时会出现问题。这些应用程序无法再与SOAP api通信。这就是错误:.net 客户端证书:无法为具有权限的SSL/TLS建立安全通道(再次!),.net,wcf,ssl,soap,tls1.2,.net,Wcf,Ssl,Soap,Tls1.2,很抱歉问这个问题,但我在Stack上找不到任何关于我的案例的答案 我开发了一个客户端应用程序,它使用WCF与外部SOAP api进行对话。为了进行身份验证,应用程序使用客户端证书。(服务器上已安装的客户端证书)。当我在本地机器上测试时,一切正常 在IIS(EC2)上部署应用程序时会出现问题。这些应用程序无法再与SOAP api通信。这就是错误: "Could not establish secure channel for SSL/TLS with authority". 我在当前用户和本地计
"Could not establish secure channel for SSL/TLS with authority".
我在当前用户和本地计算机位置的个人存储中安装了证书。当我尝试使用浏览器访问SOAP api时,它可以工作(获取wsdl文件,该文件还需要客户端证书)
注意:证书不是自签名的。它是由授权CA创建的
感谢您的帮助我将IIS应用程序池的标识更改为LocalSystem并重新启动了应用程序。我认为这是一个许可问题。如果有人能向我解释为什么它解决了这个问题,我会接受她的回答。证书存储只能由管理员访问。作为IUSER的本地iis用户
IUSER
没有管理员权限,因此您收到了该证书错误。将应用程序池标识更改为LocalSystem解决了您的问题,因为LocalSystem可以访问证书存储
另一个最佳解决方案是只允许对IUSER访问证书。(通过这样做,您获得了特定的访问权限,而不是对应用程序池的完全管理员访问权限)
要做到这一点,请访问
证书控制台->右键单击证书->所有任务->管理私钥->添加IUSER
,然后单击确定
试试这个
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
因此,据我所知,您的客户端应用程序是从本地计算机获取证书并将其附加到SOAP服务请求的web应用程序。是吗?嗨,拉什敏,是的,就是这个。你知道问题出在哪里吗?我将IIS应用程序池的标识更改为LocalSystem并重新启动了应用程序。我认为这是一个许可问题,所以它现在正在工作?是的!!谢谢你看我的问题Rashmin