SSL WCF“无法与权限'localhost'建立SSL / TLS安全通道的信任关系

时间:2009-11-16 12:47:03

标签: c# wcf iis ssl

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

因为我使用的是IIS 7,所以使用本指南here

很容易让网站https绑定并运行

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

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

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

  1. 将结束点的地址更改为https
  2. 将安全模式更改为传输
  3. 运行代码然后出现此错误:

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

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

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

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

    既然这样可行,我又遇到了另一个问题:

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

    内部异常=“远程服务器返回错误:(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 个答案:

答案 0 :(得分:2)

您很可能需要为这两个协议添加显式base addresses,以便WCF知道您要绑定到这两个协议。请尝试将其添加到<service>定义:

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

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