【发布时间】:2012-01-13 15:17:22
【问题描述】:
设置是我使用相同的应用程序池和证书在同一个 HTTPS 网站上托管 2 个类似的 WCF 应用程序。
现在第一个 WCF 应用程序在某个函数上调用第二个 WCF。在第一次调用第二个 WCF 后,抛出异常
"Could not establish trust relationship for the SSL/TLS secure channel..."
我见过类似的问题,但不同的是我的应该可以工作,因为它使用的是相同的证书。可能会发生什么?
编辑:
基本上这是在第一个 WCF 中的方法内调用第二个 WCF 的方式,
public void SomeMethod(string parameter)
{
SecondServiceClient svc2 = new SecondServiceClient ("BasicHttpBinding_IService2");
svc2.DoWork(parameter);
}
第二个 WCF 的第一个 WCF 的 web.config 端点具有如下内容:
...
<client>
<endpoint address="https://192.168.1.100/MyService2/Service2.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService2"
contract="SecondService.IService" name="BasicHttpBinding_IService" />
</client>
...
HTTPS 很难玩,我说。
【问题讨论】:
-
使用相同的证书在信任链中没有任何意义。显示您如何调用该服务。
-
您是否尝试使用像
https://localhost/...这样的 URL 访问第二个服务,并且该证书是否颁发给localhost? -
@Bruno 是的。我试过'localhost'和带有各自证书的内部IP地址无济于事。
-
如果您使用配置中使用的 URL 从 IE 访问服务 .svc 文件会发生什么?你会收到任何关于证书的警告吗?
-
@Bahamut: 是为您尝试访问的 IP 地址颁发的证书,还是为
localhost颁发的证书(如果您使用的是该名称)(这不一定很有意义)?如果您使用的是 IP 地址,是否有主题备用名称 (IP) 条目?
标签: wcf web-services ssl https