atc*_*way 16 .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"))
Run Code Online (Sandbox Code Playgroud)
代码没问题 - > 100%完美运行.
问题是,它太遥远了.我认为它的范围只在我对其进行十分转换的方法中,但显然它是'ServicePointManager'对象上的Shared属性,然后必须持久保存整个应用程序,这是我不想要的.
问题是后来我打电话给我的网络服务,并得到"无法建立信任关系..."的例外.这是因为在上面的代码行中,我检查了该方法的SSL证书的主机名.我很快就从回调中测试了返回'True',因此所有证书都是可信任的,而不是检查一个specefic名称(即MyTrustedCompany)和subiquent请求是否有效.这就是我知道这个回调赋值到达父亲的方法.当然,我可以扩展回调以包括所有其他证书名称,但我宁愿做的是将'ServerCertificateValidationCallback'设置回其默认行为.像下面的伪代码:
ServicePointManager.ServerCertificateValidationCallback = Nothing 'Default checking behavior
Run Code Online (Sandbox Code Playgroud)
如何删除自定义验证并将其设置回其默认行为?谢谢!
atc*_*way 13
这实际上似乎有效(尽可能简单)并使对象以默认方式运行.
ServicePointManager.ServerCertificateValidationCallback = Nothing
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41701 次 |
| 最近记录: |