Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 客户端证书:无法为具有权限的SSL/TLS建立安全通道(再次!)_.net_Wcf_Ssl_Soap_Tls1.2 - Fatal编程技术网

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

.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". 我在当前用户和本地计

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

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

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

"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