Saltar al contenido

No se pudo establecer una relación de confianza para el canal seguro SSL/TLS — SOAP

Nuestros mejores programadores han agotado sus reservas de café, por su búsqueda día y noche por la solución, hasta que Mauricio halló el resultado en Beanstalk por lo tanto hoy la comparte contigo.

Solución:

Los siguientes fragmentos solucionarán el caso en el que haya algún problema con el certificado SSL en el servidor al que está llamando. Por ejemplo, puede ser autofirmado o el nombre de host entre el certificado y el servidor puede no coincidir.

Esto es peligroso si está llamando a un servidor fuera de su control directo, ya que ya no puede estar seguro de que está hablando con el servidor al que cree que está conectado. Sin embargo, si está tratando con servidores internos y obtener un certificado “correcto” no es práctico, use lo siguiente para decirle al servicio web que ignore los problemas del certificado y siga adelante con valentía.

Los dos primeros usan expresiones lambda, el tercero usa código regular. El primero acepta cualquier certificado. Los dos últimos al menos comprueban que el nombre de host en el certificado es el que esperas.
… espero que lo encuentre útil

//Trust all certificates
System.Net.ServicePointManager.ServerCertificateValidationCallback =
    ((sender, certificate, chain, sslPolicyErrors) => true);

// trust sender
System.Net.ServicePointManager.ServerCertificateValidationCallback
                = ((sender, cert, chain, errors) => cert.Subject.Contains("YourServerName"));

// validate cert by calling a function
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);

// callback used to validate the certificate in an SSL conversation
private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)

    bool result = cert.Subject.Contains("YourServerName");
    return result;

La muy simple solución “catch all” es esta:

System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate  return true; ;

La solución de sebastian-castaldi es un poco más detallada.

Pensamientos (basados ​​en el dolor del pasado):

  • ¿Tiene DNS y línea de visión al servidor?
  • ¿Está utilizando el nombre correcto del certificado?
  • ¿El certificado sigue siendo válido?
  • ¿Un equilibrador de carga mal configurado está arruinando las cosas?
  • hace lo nuevo servidor máquina tiene el reloj configurado correctamente (es decir, de modo que la hora UTC sea correcta [ignore local time, it is largely irrelevent]) – esto ciertamente es importante para WCF, ¿así que puede afectar el SOAP normal?
  • ¿Hay algún problema con la cadena de confianza del certificado? si navega desde el servidor al servicio de jabón, ¿puede obtener SSL?
  • relacionado con lo anterior: ¿se ha instalado el certificado en la ubicación correcta? (es posible que necesite una copia en las Autoridades de Certificación Raíz de Confianza)
  • ¿El proxy a nivel de máquina del servidor está configurado correctamente? (que es diferente al proxy del usuario); ver proxycfg para XP / 2003 (no estoy seguro acerca de Vista, etc.)

Si guardas alguna indecisión y capacidad de aclararse nuestro enunciado eres capaz de ejecutar un paráfrasis y con gusto lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *