2014-04-04 64 views
0

我目前正在将第三方API集成到我们的软件中。其中一个要求是通过SSL/TLS使用OAuth风格的认证系统。SSL/TLS WCF问题

这不是问题,它工作了大约一天半。然后突然间,即使在尝试进行身份验证时,它也会不断向我反馈这个错误。

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

,这是工作,现在它不是混淆包里拿出我的,我不知道在哪里,甚至开始寻找解决这个事实。

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

对于为什么我们会得到这样的错误,您有没有任何建议?我不知道哪里可以开始寻找。

UPDATE

证书存在于受信任的存储。

我们目前拥有我们的网站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调用的服务器有一个奇怪的网址,不匹配的证书的颁发者/主题。这是什么把它扔掉?

+0

检查证书并检查根证书是否在您的可信存储中。 – Dunken

+0

我已将证书添加到根存储以及域中。没有效果。我也更新了我的答案。 – MightyLampshade

+1

您是使用Fiddler还是另一个解密SSL的代理?如果发生这种情况,您的代码会看到代理的证书,而不是目标服务器的证书。此外,如果信任链中的任何证书无效,则无论您是否将其置于可信存储区,您的证书都不再有效。禁用验证不是您可以部署到生产的解决方案。记住最近的Safari漏洞。 –

回答

1

我们试图访问API调用的服务器有一个奇怪的Web地址,它与证书的颁发者/主体不匹配。这是什么把它扔掉?

是的。证书是通过检查你正在打开一个连接的主机名和证书中所标识的主机名(S)之间的匹配验证。主机名是“网络地址”的第一部分 - 例如,stackoverflow.comwww.google.com

+0

好的,谢谢。由于这是我们客户的问题,因此我们已与他们联系。谢谢:) 将标记为答案。 – MightyLampshade