Pregunta

Estoy tratando de hacer una llamada SSL usando HTTPWebRequest y falla continuamente diciendo que no puede establecer confianza. He agregado una devolución de llamada a ServicePointManager.ServerCertificateValidationCallback y devolver true siempre funciona. Sin embargo, me gustaría que las cosas sean un poco más seguras que eso. Al mirar el SslPolicyErrors en el método de validación, parece que recibo un error RemoteCertificateNameMismatch . ¿Qué no coincide correctamente para causar este tipo de error?

(editar: ver comentarios en la respuesta) El sitio al que accedo utiliza HTTPBasic sobre SSL y una URL similar a v1.api.serviceprovider.com, con un certificado emitido a * .serviceprovider.com.

¿Fue útil?

Solución

Problemas generales del certificado:

  • certificado no emitido por un proveedor de certificados de confianza (debe estar en su cadena de confianza)
  • certificado caducado

Este error específico generalmente significa que el certificado no se emite para el sitio que está visitando. Ejemplos:

  • diferencia entre " www.yoursite.com " y "yoursite.com" (son diferentes; algunos grandes nombres se equivocan, lo que realmente me molesta ...)
  • acceder como una dirección IP en lugar del nombre en el certificado; o v / v
  • un equilibrador de carga que lo redirige a "servidor1, yoursite.com" pero dándole el certificado de " yoursite.com "
  • un equilibrador de carga que lo pasa silenciosamente a "servidor1", que emite certificados para "servidor1", no el sitio
  • ( editar ver comentarios ) un certificado comodín emitido para múltiples niveles, es decir, emitido a * .somesite.org, cuando está presionando foo.bar.somesite.org

La mayoría de estos son fácilmente identificables navegando al sitio y leyendo las advertencias que le da su navegador e inspeccionando el certificado que se emitió.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top