客户端证书:无法使用权限为 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;
很抱歉问这个问题,但我在 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;