post icon

Validar Certificado SSL con VB.Net y C#.Net

Cuando necesitamos consumir Web Services o respuestas HTTPS de sitios que están cifrados con un certificado SSL, ya sea verificado o no, tenemos que poder aceptar dicho certificado en el programa cliente para realizar la conexión.

Si no hacemos la aceptación de dicho certificado nos toparemos con el siguiente mensaje de error:

Se ha terminado la conexión: No se puede establecer una relación de confianza para el canal seguro SSL/TLS.

Para implementar en el tipo de cliente que sea que estemos creando debemos agregar un método que nos retorne el OK o aceptación del SSL

Private Function ValidarCertificado(ByVal sender As Object, ByVal certificate 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
private Boolean ValidarCertificado(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
	return true;
}

Luego, antes de crear la petición HTTPS invocamos a nuestro método

System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf ValidarCertificado)

 

System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidarCertificado);

Con esto en la mayoría de los casos ya sería suficiente, pero dependiendo del servidor, que versión de HTTP utilizan y reciben éste error

HTTP Version not supported

podrían necesitar agregar también estas lineas en su web.configo app.config

<system.net>
   <settings>
      <servicePointManager expect100Continue="false"/>
    </settings>
  </system.net>

o hacerlo con script

System.Net.ServicePointManager.Expect100Continue = False
System.Net.ServicePointManager.Expect100Continue = false;

Comentarios desde Facebook:

  1. avatar
    Andrés Google Chrome Windows
    5 noviembre 2016 at 09:35 #

    Muchas gracias!!!!

  2. avatar
    Victor PERU Google Chrome Windows
    29 octubre 2015 at 11:55 #

    Me funciono! muchas gracias.

Responder