2011-05-13 82 views
17

Estoy buscando una forma de validar (o eludir la validación) certificados SSL autofirmados utilizando VB .Net. Encontré código para hacer esto en C# e intenté convertirlo en código VB, pero no estoy teniendo suerte.VB .net Aceptar certificado SSL autofirmado

Aquí es el C# code.

Aquí es lo que he intentado:

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 

A continuación, antes de la WebRequest que tienen esta línea de código que me da un error.

ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications) 

El mensaje de error es:

Delegate 'System.Net.Security.RemoteCertificateValidationCallback' requires an 'AddressOf' expression or lambda expression as the only argument to its constructor. 

Respuesta

25

en VB.Net, tiene que escribir

ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications 
+0

Sip .. eso fue todo. Pensé que me estaba perdiendo algo simple. Lo vi en el mensaje de error y juro que lo intenté pero supongo que no. Gracias. – compcentral

1

No estoy seguro, pero esto debería funcionar:

ServicePointManager.ServerCertificateValidationCallback = _ 
     New RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications) 

http://msdn.microsoft.com/de-de/library/system.net.security.remotecertificatevalidationcallback%28VS.90%29.aspx

+0

Correcto también. Gracias. – compcentral

+0

@compcentral: ¿Seguro que ambos son correctos? Parecen ser un poco diferentes. –

+2

Mi sintaxis fue introducida por VB.Net 2005 (como C# 's) – SLaks

0

en VB.Net,

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls 

resuelve el problema de las aplicaciones menos seguras.

0

de una sola línea:

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 

Créditos a Robby Tendean

Cuestiones relacionadas