【问题标题】:Client certificate: Could not establish secure channel for SSL/TLS with authority (Again!)客户端证书:无法为具有权限的 SSL/TLS 建立安全通道(再次!)
【发布时间】:2017-08-23 06:04:33
【问题描述】:

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

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

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

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

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

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

感谢您的帮助

【问题讨论】:

  • 因此,据我了解,您的客户端应用程序是从本地计算机获取证书并将其附加到对 SOAP 服务的请求的 Web 应用程序。是吗?
  • 嗨,拉什敏,是的,就是这样。你有什么线索可以解决问题吗?
  • 我把IIS的应用程序池的Identity改成了LocalSystem,然后重启了应用。我认为这是一个权限问题
  • 那么它现在可以工作了吗?
  • 是的!感谢您查看我的问题 Rashmin

标签: .net wcf ssl soap tls1.2


【解决方案1】:

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

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

为此,请转到 证书控制台->右键单击证书->所有任务->管理私钥->添加IUSER并单击确定。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      试试这个。

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

      【讨论】:

        猜你喜欢
        • 2011-09-19
        • 2011-05-26
        • 2014-11-26
        • 2019-12-05
        • 2018-04-21
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多