SSL / TLS WCF问题

时间:2014-04-04 08:30:08

标签: c# wcf ssl

我目前正致力于将第三方API集成到我们的软件中。其中一个要求是在SSL / TLS上使用OAuth样式的身份验证系统。

这不是一个问题,它可以工作大约一天半。然后突然间,它开始不断地向我发回这个错误,即使在尝试进行身份验证时也是如此。

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

事实上它正在发挥作用,现在它并没有让我感到困惑,我不知道在哪里开始寻求解决这个问题。

所涉及的方法是从我们在HTTPS环境中托管的WCF服务调用的。我们拥有来自提供商的有效签名证书。实施中没有任何改变,它只是停止了工作。

你们有没有任何关于我们为什么会收到这样的错误的建议?我不知道从哪里开始寻找。

更新

证书存在于受信任的商店中。

我们目前的网站为www.mywebsite.co.uk,并附有该网站的有效证书。我们的服务位于www.mywebsite.co.uk/Services。

我们还使用Windows服务,该服务使用位于www.mywebsite.co.uk/Services的相应WCF。可能是导致问题的Windows服务? Windows服务应用程序位于托管服务器上,即Windows Server 2012。

更新2

为了解决此问题,我们决定使用该方法忽略证书验证错误。这段代码摘录可以在这里的其他一些文章中找到,但这里无论如何都适用于任何读者。

ServicePointManager.ServerCertificateValidationCallback = (obj, certificate, chain, errors) => true;

更新3

好的,看了一会儿后,我设法从ServerCertificateValidationCallback中获取了这些错误。它告诉我有这个错误

RemoteCertificateNameMismatch

我们尝试访问API调用的服务器有一个奇怪的网址,与证书的发行者/主题不匹配。这是什么让它脱落?

1 个答案:

答案 0 :(得分:1)

  

我们尝试访问API调用的服务器有一个奇怪的网址,与证书的发行者/主题不匹配。这是什么让它脱落?

是的,确实如此。通过检查要打开连接的主机名与证书中标识的主机名之间的匹配来验证证书。主机名是"网址的第一部分" - 例如,stackoverflow.comwww.google.com