Este código

import requests
requests.get("https://hcaidcs.phe.org.uk/WebPages/GeneralHomePage.aspx")

me está dando este error

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)

Sé prácticamente nada acerca de SSL, pero he intentado descargar el certificado del sitio y apuntando a ese archivo utilizando el verify opción, pero no ha funcionado. Me estoy perdiendo algo?

InformationsquelleAutor Oliver | 2017-10-06

2 Comentarios

  1. 12

    Como ya se señaló en un comentario: el sitio tiene una mala implementación de SSL como puede verse en la SSLLabs informe. La parte principal de este informe en cuanto a tu problema es:

    Esta cadena de certificados del servidor es incompleta. Grado tapado para B.

    Esto significa que el servidor no está enviando el certificado completo de la cadena como es necesario para verificar el certificado. Esto significa que usted necesita para agregar la falta de certificados de sí mismo a la hora de validar. Para ello es necesario incluir el PEM de la falta de la cadena de certificado C=US, O=DigiCert, Inc, OU=www.digicert.com, CN=DigiCert SHA2 de Alta Garantía de Servidor de CA y también de la CA raíz C=US, O=DigiCert, Inc, OU=www.digicert.com, CN=DigiCert Alta Garantía EV CA Raíz información de un archivo my_trust_store.pem y, a continuación, puede llamar a:

    requests.get("https://...", verify='my_trust_store.pem')

    … pero he intentado descargar el certificado del sitio y apuntando a ese archivo utilizando la opción de comprobar

    Esto no va a funcionar con normalidad hoja de certificados. Desde el SSL pila de Python se basa en OpenSSL OpenSSL y espera sólo emisoras de certificados de confianza en el almacén de confianza (es decir, dado con verify) y un certificado de servidor no es el certificado de CA no va a ayudar a agregar al almacén de confianza.

    • Que resolver mi problema, muchas gracias por la explicación.
  2. -6
    import requests
    html = requests.get("https://hcaidcs.phe.org.uk/WebPages/GeneralHomePage.aspx",verify=False).text

    Debes escribir algo como esto, y he verificado

    • Si desea obtener información adicional de la persona que pregunta, por favor utilice la sección de comentarios. Respuestas que están a sólo un tiro en el azul podría obtener votada abajo.
    • Esto simplemente desactiva cualquier tipo de validación de certificados. Esto sólo debe ser usado para pruebas, pero nunca en la producción, ya que la aplicación se abre para el hombre en el centro de los ataques.
    • Lo suficientemente bueno para la casa de secuencias de comandos de la OMI. Buena respuesta

Dejar respuesta

Please enter your comment!
Please enter your name here