在 VB.NET 中接受自签名 TLS/SSL 证书
我正在寻找一种使用 VB.NET 验证(或绕过验证)自签名 SSL 证书的方法。我在 C# 中找到了执行此操作的代码,并尝试将其转换为 VB 代码,但我没有任何运气。
以下是 C# 代码: 如何使用 WebRequest 通过 https 访问 SSL 加密站点?
这是我尝试过的:
Imports System
Imports System.Net
Imports System.Security.Cryptography.X509Certificates
Public Class clsSSL
Public Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean
Return True
End Function
End Class
然后在 WebRequest
之前,我有这行代码,它给了我一个错误。
ServicePointManager.ServerCertificateValidationCallback =
New System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications)
错误信息是:
委托“System.Net.Security.RemoteCertificateValidationCallback”需要“AddressOf”表达式或 lambda 表达式作为其构造函数的唯一参数。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在VB.Net中,你需要写
In VB.Net, you need to write
一句话:
归功于 罗比·坦迪恩
One-liner:
Credits to Robby Tendean
这里的所有答案都盲目接受任何证书。这是一个安全缺陷。
实施
ServicePointManager.ServerCertificateValidation
时回调应该验证证书。例如,通过根据已知值检查证书的哈希值:对于
X509Certificate.GetCertHashString
重载需要HashAlgorithmName.SHA256
,您需要 .NET 4.8。在旧版本上使用 返回 SHA-1 哈希值的无参数重载。基于当您知道无效证书是安全时测试 X509Certificate.Thumbprint 属性是否安全?
对于 C# 版本的代码,请参阅 FtpWebRequest“根据验证程序,远程证书无效”。
All the answers here blindly accept any certificate. That's a security flaw.
When implementing
ServicePointManager.ServerCertificateValidation
callback one should validate the certificate. E.g. by checking certificate's hash against a known value:For the
X509Certificate.GetCertHashString
overload that takesHashAlgorithmName.SHA256
, you need .NET 4.8. On older versions use the parameter-less overload that returns an SHA-1 hash.Based on Is it safe to test the X509Certificate.Thumbprint property when you know an invalid certificate is safe?
For C# version of the code, see FtpWebRequest "The remote certificate is invalid according to the validation procedure".
我不确定,但这应该有效:
http://msdn.microsoft.com/de-de/library/system.net.security.remotecertificatevalidationcallback%28VS.90%29.aspx
I'm not sure but this should work:
http://msdn.microsoft.com/de-de/library/system.net.security.remotecertificatevalidationcallback%28VS.90%29.aspx
在VB.Net中,
解决了应用程序安全性较低的问题。
In VB.Net,
solves the less secure apps problem.
在 VB.Net 中
In VB.Net