.net - 如何将 'ServerCertificateValidationCallback' 属性设置回其默认行为?

标签 .net vb.net ssl ssl-certificate

我在单个方法中使用以下代码行来明确检查并信任来自以下主机的 SSL 证书:MyTrustedCompany.com:

ServicePointManager.ServerCertificateValidationCallback = Function(obj As [Object], certificate As X509Certificate, chain As X509Chain, errors As SslPolicyErrors) (certificate.Subject.Contains("CN=MyTrustedCompany.com"))

代码没问题 -> 100% 完美运行。

问题是,它影响太大了。我原以为它的范围只会在我为其贴标的方法内,但显然它是“ServicePointManager”对象上的一个共享属性,并且必须在整个应用程序中持续存在,这是我不想要的。

问题是后来我调用我的 Web 服务等并收到“无法建立信任关系...”异常。这是因为在上面的代码行中,我检查了特定于该方法的 SSL 证书的主机名。我快速测试了从回调中返回“True”,因此所有证书都将受到信任,而不是检查特定名称(即 MyTrustedCompany)和后续请求有效。这就是我知道这个回调分配比那个单一方法到达父亲的方式。当然,我可以扩展回调以包括所有其他证书名称,但我宁愿做的是将“ServerCertificateValidationCallback”设置回其默认行为。像下面的伪代码:

ServicePointManager.ServerCertificateValidationCallback = Nothing  'Default checking behavior

如何删除自定义验证并将其设置回默认行为?谢谢!

最佳答案

这实际上似乎有效(尽管很简单)并使对象以其默认方式运行。

ServicePointManager.ServerCertificateValidationCallback = Nothing

关于.net - 如何将 'ServerCertificateValidationCallback' 属性设置回其默认行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156365/

相关文章:

.htaccess - 将 https ://www. example.com 重定向到 https ://example. com

multithreading - 使用 HTTPS 和多线程进行 Curl

c# - WPF 中是否有类似 Winforms.Show ( IWin32Window 所有者)的方法?

.net - LINQ-在可为空的列上连接表

c# - 在 .NET JSON 序列化期间忽略字段;类似于 [XmlIgnore]?

vb.net - 如何更改 Microsoft Visual Basic 中的默认语言

html - 将行添加到 webbrowser 对象中的现有表

facebook - 如何忽略 Qt5 QML QWebKit 3.0 中的 SSL 错误?

c# - IP 地址.Any 失败

c# - Bonjour COM 库在哪里?