SSL WCF“无法为具有权限‘localhost’的 SSL/TLS 安全通道建立信任关系

Posted

技术标签:

【中文标题】SSL WCF“无法为具有权限‘localhost’的 SSL/TLS 安全通道建立信任关系【英文标题】:SSL WCF "Could not establish trust relationship for the SSL/TLS secure channel with authority 'localhost' 【发布时间】:2010-12-17 01:16:17 【问题描述】:

我有一个 WCF Web 服务,它可以与 http 地址完美配合,但从那时起我需要确保它可以通过 https 工作。

因为我使用的是 IIS 7,所以使用本指南 here 来启动和运行网站 https 绑定非常容易

我打开了一个浏览器,得到了通常的安全提示,但是在我添加了异常之后一切正常。

然后我决定安装证书,因为证书是本地主机,服务器和客户端是同一台机器 - 并让向导自动检测位置。

我回到我的 WCF CLIENT 代码,这是调用托管在 IIS(现在是 https)中的 Web 服务并在 2 个地方更改绑定的客户端。

    端点地址改为https 将安全模式更改为传输

运行代码然后得到这个错误:

“无法为具有 'localhost' 权限的 SSL/TLS 安全通道建立信任关系。”

最后我回到 IIS 并在 SSL 设置下,将设置更改为接受客户端证书,并尝试检查是否需要检查,两次都产生相同的错误。

知道如何解决这个问题吗?

更新 问题 1 已修复 - 这是因为证书已颁发给 machine_name,而我在配置中使用 localhost。

现在这可行,我遇到了另一个问题:

https://[machine_name]/Downloads.svc 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。”

Inner exception = "远程服务器返回错误:(404) Not Found。"

检查了 IIS 站点的 web.config,并将 DNS 绑定更改为 localhost。

这仍然很有趣,但根据微软的说法,这正是 WCF 应该好的原因,因为它将传输与编码逻辑分开,但到目前为止我必须告诉你,它看起来真的很复杂。

更新

关闭了windows防火墙,没有帮助...

这是我在 web.config 中的绑定

<basicHttpBinding>
     <binding name="IncreasedTimeout" 
              closeTimeout="12:00:00" openTimeout="12:00:00"
              receiveTimeout="12:00:00"
              maxReceivedMessageSize="1000000"
              sendTimeout="12:00:00">
       <security>
         <transport></transport>
       </security>
     </binding>
</basicHttpBinding>

【问题讨论】:

谢谢 :) 我也为此苦苦挣扎。您的问题 #1 解决方案正是我所需要的。 赞成修复问题 1... 我遇到了完全相同的问题! 赞成修复问题 #1! 【参考方案1】:

您很可能需要为这两种协议添加明确的base addresses,以便 WCF 知道您想要绑定到这两种协议。尝试将此添加到您的 &lt;service&gt; 定义中:

<host>
    <baseAddresses>
        <add baseAddress="http://your-hostname-here/" />
        <add baseAddress="https://your-hostname-here/" />
    </baseAddresses>
</host>

另外,请确保您通过计算机的 WINS/DNS 名称访问服务,或者您需要在 IIS 下向网站实例添加显式主机标头。

【讨论】:

以上是关于SSL WCF“无法为具有权限‘localhost’的 SSL/TLS 安全通道建立信任关系的主要内容,如果未能解决你的问题,请参考以下文章

如何将 WCF 配置为接受 SSL 和非 SSL

ssl、silverlight、wcf 和本地安装

设置 SSL 以在 Azure 上使用 WCF 的步骤是啥?

在 Android 中通过 SSL 使用 WCF 服务

通过 SSL 使用 JSONP 的 WCF 服务

使用传输安全性时是不是需要用于 WCF 的 SSL?