"SSL: CERTIFICATE_VERIFY_FAILED" con mis propios certificados

1

Dos sitios. Solo una funciona.

Tengo dos sitios habilitados para SSL que se ejecutan en Heroku, los cuales proporcionan API. Compré los certificados SSL de diferentes fuentes.

Cuando uso Ruby y Python para hacer algunas llamadas POST a la API del sitio # 1, todo funciona bien.

Sin embargo, cuando uso Ruby y Python para hacer algunas llamadas POST a la API del sitio # 2, obtengo SSL: certificate verify failed de errores. (Aunque todo parece estar bien cuando accedo al sitio en Chrome)

Error de Ruby para el sitio 2:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Error de Python para el sitio 2:
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

¿Es suficiente un certificado de "dominio validado"?

Me gustaría que otros usuarios puedan acceder a la API del sitio # 2, sin tener que piratear para evitar este error. Pero no estoy seguro de cuál es el problema, es que mi certificado es intrínsecamente inseguro (solo se valida en el dominio, pero creo que el certificado n. ° 1 también está validado solo en el dominio, así que no estoy seguro de por qué funciona bien) ¿O es posible que haya estropeado algo al configurar SSL para el Sitio # 2 (para poder solucionar el problema sin comprar otro certificado)?

Si necesito comprar otro certificado, ¿debo asegurarme de que sea un certificado OV o EV? ¿O funcionaría un certificado DV de una determinada fuente? (No tengo una empresa oficial establecida todavía, por lo que preferiría un certificado DV por ahora, aunque sé que parece menos confiable).

(He buscado en Google estos errores, pero todas las soluciones parecen sugerir algún tipo de problema local de Ruby / Python, mientras que creo que tengo un problema con el certificado).

Más detalles

Más detalles sobre el certificado problemático:

  • Publicado por COMODO RSA Domain Validation Secure Server CA.
  • El "nombre común" es realmente diferente del dominio al que estoy tratando de acceder. (porque se pretende que sea un certificado de varios dominios)
  • Si veo los detalles del certificado en Chrome, Chrome dice Valid Certificate: The connection to this site is using a valid, trusted server certificate.
  • ssllabs.com ( enlace ) le otorga al dominio 3 calificaciones A +.
pregunta haelcuoe 08.11.2016 - 05:38
fuente

1 respuesta

1

No tengo problemas para acceder a www.hybridml.com con python y solicita la biblioteca. Probado con 2.7.6., 2.7.12 y 3.5.2. Además, el informe de SSLLabs se ve bien, es decir, no faltan certificados de cadena y el asunto coincide. Y los navegadores funcionan bien.

Esto juntos sugiere que tienes algo que está interceptando la conexión SSL. Este tipo de SSL en el medio da como resultado un nuevo certificado para el sitio de destino firmado por la CA del software de intercepción. Dado que el navegador no emite advertencias, es probable que se trate de una intercepción legal, generalmente realizada por un firewall corporativo, pero también por varias soluciones antivirus para computadoras de escritorio. También podría ser que el navegador y el proxy se conecten de manera diferente al objetivo, es decir, uno a través de un proxy y el otro no. Estas diferencias pueden ocurrir porque python y ruby no comparten la lista de CA confiables ni las configuraciones de proxy con el navegador.

Le sugiero que verifique la cadena de certificados dentro del navegador y vea si realmente resulta en la CA Comodo esperada como una raíz o algo más, es decir, la CA del hombre del medio.

    
respondido por el Steffen Ullrich 08.11.2016 - 08:22
fuente

Lea otras preguntas en las etiquetas