我在两个具有不同证书的不同HTTPS网站上托管了两个WCF。 WCF(a)使用if子句调用WCF(b),反之亦然,以取消可能的无限循环。
每次调用两个WCF的方法时,都会返回错误:
Could not establish trust relationship for the SSL/TLS
我尝试在受信任的根证书中安装证书,但仍然出现错误。不幸的是,避免使用WCF调用另一个WCF。
对此有何解决方法?
更新:
我已经尝试在同一个网站上托管它并且它有效,所以我认为这是特定于使用的证书?那么必须使用相同的证书吗?或者是否有可能使用不同证书的不同网站?
答案 0 :(得分:3)
使用自签名证书时,您需要在访问WCF服务的客户端中将证书验证返回true。
代码如下所示:
System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
{
return true;
};
在调用服务方法之前,只需放置此代码即可。
此外,由于您有2个服务A和B互相呼叫,因此上述代码在您拨打电话时应该在两个地方。以上是信任证书,而不是来自可靠的证书提供者。
答案 1 :(得分:1)
使用SSL的自签名证书,您需要注意以下事项:
通过在IIS下托管服务可以满足这些步骤,并使用IIS生成服务器证书。
另请注意,wcf通常要求将CRL附加到证书。但这也可以使用certmgr.exe生成。