重置ServerCertificateValidationCallback

时间:2017-06-28 12:45:56

标签: c# ssl ssl-certificate

我需要访问具有证书的REST服务,该证书并非真正有效。所以我在我的代码中输入了以下内容:

     System.Net.ServicePointManager.ServerCertificateValidationCallback = 
            ((sender, cert, chain, errors) => 
            cert.Subject.Contains("soap.example.com"));

之后我会做我必须做的事情来检索Soap-Values。

一切都很好。

但是后来我需要连接到另一个域(具有有效的SSL证书)并且由于证书错误而崩溃,如果我重新启动IIS并且仅在再次调用上面显示的代码段之后才返回:

  

System.Net.WebException:底层连接已关闭:可以   不建立SSL / TLS安全通道的信任关系。 --->   System.Security.Authentication.AuthenticationException:远程   证书根据验证程序无效。

因此,在完成Soap-call之后,我怎样才能确定,正常行为是否再次起作用?

简单地重置为ServerCertificateValidationCallback=null似乎不起作用。

(我完全了解CallBack的危险性)

1 个答案:

答案 0 :(得分:1)

System.Net.ServicePointManager.ServerCertificateValidationCallback = 
        ((sender, cert, chain, errors) => 
        errors == SslPolicyErrors.None || cert.Subject.Contains("soap.example.com"));

应该这样做。