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 知道您想要绑定到这两种协议。尝试将此添加到您的 <service>
定义中:
<host>
<baseAddresses>
<add baseAddress="http://your-hostname-here/" />
<add baseAddress="https://your-hostname-here/" />
</baseAddresses>
</host>
另外,请确保您通过计算机的 WINS/DNS 名称访问服务,或者您需要在 IIS 下向网站实例添加显式主机标头。
【讨论】:
以上是关于SSL WCF“无法为具有权限‘localhost’的 SSL/TLS 安全通道建立信任关系的主要内容,如果未能解决你的问题,请参考以下文章