“无法与有效证书建立SSL / TLS安全通道的信任关系”

时间:2012-11-20 17:09:05

标签: .net wcf ssl

我在亚马逊云服务器上运行WCF服务。 有时在某些客户端 - 这是长时间运行的进程,每5分钟轮询一次服务 - 会发生以下异常:

  

System.ServiceModel.Security.SecurityNegotiationException:无法   建立SSL / TLS安全通道的信任关系   权威'myservicehost.com'。 ---> System.Net.WebException:   底层连接已关闭:无法建立信任   SSL / TLS安全通道的关系。 --->   System.Security.Authentication.AuthenticationException:远程   证书根据验证程序无效。

这看起来SSL证书有问题,但我找不到原因。证书由DigiCert发布​​。

奇怪的是,始终在客户端启动时,WCF调用成功。然后,正如我所写,每隔5分钟重复一次通话。这工作正常,直到30分钟到8小时之间。从那时起,它不再起作用,并且每次后续调用都会发生上述异常。这种状态可以保持几天。

在极少数情况下,在2/3天后,它会在异常重新开始之前再次运作一段时间。

当我重新启动客户端进程时,一段时间之后再次没问题,直到上述问题一再重复开始。

这里有很多关于这个标题的消息,但我没有发现任何与我的特殊问题相关的信息。在大多数其他情况下,异常总是发生,而不是不定期发生。那么,任何人都可以帮助或尝试指出我的方向吗?

1 个答案:

答案 0 :(得分:0)

经过长时间的研究,我找到了解决方案。在我们软件的同一过程中,另一个模块在执行FTP请求的同时运行,其中包含以下代码:

ServicePointManager.ServerCertificateValidationCallback =
    new RemoteCertificateValidationCallback( myCertificateValidation );

myCertificateValidation是一个执行自定义验证的回调方法。不幸的是,就我而言,它始终返回false。这导致了上述异常。由于FTP模块没有一直运行,因此很难找到错误。