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)
오류 메시지는 다음과 같습니다.
'시스템'을 위임합니다.넷. 보안.RemoteCertificateValidationCallback'에는 해당 생성자에 대한 유일한 인수로 'AddressOf' 식 또는 람다 식이 필요합니다.
VB.Net에서, 당신은 다음과 같이 써야 합니다.
ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications
한 줄:
System.Net.ServicePointManager.ServerCertificateValidationCallback = _
Function(se As Object, _
cert As System.Security.Cryptography.X509Certificates.X509Certificate, _
chain As System.Security.Cryptography.X509Certificates.X509Chain, _
sslerror As System.Net.Security.SslPolicyErrors) True
로비 텐던에 대한 크레딧
여기에 있는 모든 답변은 모든 인증서를 맹목적으로 수락합니다.그것은 보안상의 결함입니다.
콜백을 구현할 때는 인증서의 유효성을 확인해야 합니다.예: 알려진 값에 대해 인증서의 해시를 확인합니다.
Imports System.Net
Imports System.Net.Security
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
ServicePointManager.ServerCertificateValidationCallback =
Function(sender As Object, certificate As X509Certificate, chain As X509Chain,
errors As SslPolicyErrors)
Return _
(errors = SslPolicyErrors.None) Or
certificate.GetCertHashString(HashAlgorithmName.SHA256).Equals(
"EB8E0B28AE064ED58CBED9DAEB46CFEB3BD7ECA67737179E3C85BC3CD09D4EEC")
End Function
필요한 오버로드의 경우 .NET 4.8이 필요합니다.이전 버전에서는 SHA-1 해시를 반환하는 매개 변수 없는 오버로드를 사용합니다.
X509 인증서를 테스트하는 것이 안전한가에 기초합니다.잘못된 인증서가 안전하다는 것을 알았을 때 지문 속성?
코드의 C# 버전은 FtpWebRequest "원격 인증서가 유효성 검사 절차에 따라 유효하지 않습니다."를 참조하십시오.
이 방법이 효과가 있을지는 잘 모르겠습니다.
ServicePointManager.ServerCertificateValidationCallback = _
New RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications)
VB.Net에서는
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
보안이 떨어지는 앱 문제를 해결합니다.
VB.Net에서
ServicePointManager.ServerCertificateValidationCallback = Function(s, c, h, e) True
언급URL : https://stackoverflow.com/questions/5998004/accept-self-signed-tls-ssl-certificate-in-vb-net
'programing' 카테고리의 다른 글
| iPhone에서 처음 앱 실행을 감지하는 방법 (0) | 2023.06.03 |
|---|---|
| Linux에서 WPF가 이미 가능합니까? (0) | 2023.06.03 |
| SimpleNamespace와 빈 클래스 정의의 차이점은 무엇입니까? (0) | 2023.06.03 |
| x초마다 함수를 반복 실행하는 방법은 무엇입니까? (0) | 2023.06.03 |
| iOS 앱이 감옥에서 고장난 전화기에서 실행되고 있는지 어떻게 감지합니까? (0) | 2023.06.03 |