WCF调用另一个WCF:无法为SSL / TLS建立信任关系

时间:2012-01-30 12:37:36

标签: wcf ssl https ssl-certificate

我在两个具有不同证书的不同HTTPS网站上托管了两个WCF。 WCF(a)使用if子句调用WCF(b),反之亦然,以取消可能的无限循环。

每次调用两个WCF的方法时,都会返回错误:

Could not establish trust relationship for the SSL/TLS

我尝试在受信任的根证书中安装证书,但仍然出现错误。不幸的是,避免使用WCF调用另一个WCF。

对此有何解决方法?

更新:

我已经尝试在同一个网站上托管它并且它有效,所以我认为这是特定于使用的证书?那么必须使用相同的证书吗?或者是否有可能使用不同证书的不同网站?

2 个答案:

答案 0 :(得分:3)

使用自签名证书时,您需要在访问WCF服务的客户端中将证书验证返回true。

代码如下所示:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                                     {
                                                                                         return true;
                                                                                     };

在调用服务方法之前,只需放置此代码即可。

此外,由于您有2个服务A和B互相呼叫,因此上述代码在您拨打电话时应该在两个地方。以上是信任证书,而不是来自可靠的证书提供者。

答案 1 :(得分:1)

使用SSL的自签名证书,您需要注意以下事项:

  1. 需要在LocalHost \ My和LocalHost \ CA商店中安装证书。
  2. 主题中的公用名称部分需要与服务器的完全限定域名匹配。对于自签名证书,您可以使用公共IP地址。
  3. 运行您的服务的帐户必须具有对证书私钥的读取权限。
  4. 通过在IIS下托管服务可以满足这些步骤,并使用IIS生成服务器证书。

    另请注意,wcf通常要求将CRL附加到证书。但这也可以使用certmgr.exe生成。