Solucione el error SSL: CERTIFICATE_VERIFY_FAILED en Python

Zeeshan Afridi 10 octubre 2023
  1. Certificado SSL
  2. Causas del error SSL: CERTIFICATE_VERIFY_FAILED
  3. Solucione el error SSL: CERTIFICATE_VERIFY_FAILED
  4. Solucione el error SSL: CERTIFICATE_VERIFY_FAILED creando un contexto no verificado en SSL
  5. Solucione el error SSL: CERTIFICATE_VERIFY_FAILED creando un contexto HTTP no verificado en SSL
  6. Solucione el error SSL: CERTIFICATE_VERIFY_FAILED con el comando pip
  7. Solucione el error SSL: CERTIFICATE_VERIFY_FAILED utilizando el módulo de solicitudes
  8. Conclusión
Solucione el error SSL: CERTIFICATE_VERIFY_FAILED en Python

SSL es un protocolo para cifrar los datos transmitidos entre los usuarios y el servidor. El servidor crea y envía al cliente un certificado digital para garantizar que los datos no se alteren.

Al crear un certificado SSL, la CA verifica el dominio.

Si el dominio no existe en la dirección especificada en el certificado, la CA devuelve un error para la autoridad certificadora (CA). Aprenderemos más sobre SSL y las causas del error SSL: CERTIFICATE_VERIFY_FAILED.

Certificado SSL

Un certificado SSL es un certificado digital que permite a las empresas establecer una conexión segura y cifrada con un navegador web. Cuando una empresa tiene un certificado SSL, cualquier información que se intercambie entre la empresa y el navegador web se cifrará, lo que dificulta que alguien pueda interceptar y leer los datos.

Esto es importante para las empresas porque ayuda a proteger la información confidencial, como los números de tarjetas de crédito y las credenciales de inicio de sesión.

Causas del error SSL: CERTIFICATE_VERIFY_FAILED

Hay algunas razones detrás del error SSL: CERTIFICATE_VERIFY_FAILED. Cada uno se explica a continuación.

  1. Una posibilidad es que el certificado SSL del sitio web no sea válido, lo que significa que el sitio web no está utilizando un certificado válido para cifrar los datos y la comunicación entre el cliente y el servidor. Como resultado, su navegador no puede verificar la identidad del sitio web.

    Esto puede ser un riesgo de seguridad. Significa que sus datos pueden no estar correctamente encriptados y podrían ser interceptados por terceros.

  2. Otra posibilidad es que su navegador no reconozca el certificado SSL del sitio web. Esto puede suceder si el sitio web utiliza un certificado autofirmado o un certificado de una autoridad desconocida.

    En cualquier caso, su navegador no podrá verificar correctamente la identidad del sitio web, lo que nuevamente puede ser un riesgo de seguridad.

  3. Finalmente, el error SSL: CERTIFICATE_VERIFY_FAILED también puede ocurrir si hay un problema con la cadena de certificados SSL del sitio web. Esto puede suceder si uno de los certificados de la cadena está vencido o revocado, o si el sitio web usa una versión de SSL desactualizada.

    Si ve este error, debe comunicarse con el propietario del sitio web y pedirle que solucione el problema.

Solucione el error SSL: CERTIFICATE_VERIFY_FAILED

Si ve el error SSL: CERTIFICATE_VERIFY_FAILED, su computadora no puede verificar el certificado SSL para el sitio web que está tratando de visitar. Esto puede suceder por varias razones, incluidos problemas con el certificado SSL del sitio web, el almacén de confianza de su computadora o problemas de red.

Para corregir el error SSL: CERTIFICATE_VERIFY_FAILED, deberá averiguar qué lo está causando.

¿Es un problema con el certificado SSL del sitio web? Si es así, puede intentar visitar el sitio con un navegador diferente o ponerse en contacto con el propietario del sitio web para informarle.

Si el problema está relacionado con el almacén de confianza de su computadora, deberá actualizar su almacén de confianza con los certificados más recientes. Y si el problema está relacionado con su red, deberá solucionar el problema de su conexión de red.

Solucione el error SSL: CERTIFICATE_VERIFY_FAILED creando un contexto no verificado en SSL

Con respecto a SSL, una de las cosas más importantes a considerar es el contexto en el que se utilizará. Desafortunadamente, no hay una respuesta única para esta pregunta, ya que el contexto en el que se utilizará SSL variará según la situación específica.

Sin embargo, hay algunos consejos generales que pueden ayudar a crear un contexto SSL más seguro.

En primer lugar, es importante asegurarse de que todas las conexiones SSL se realicen mediante criptografía sólida. Esto significa usar algoritmos fuertes, como SHA-256 o SHA-512, y asegurarse de que todas las claves tengan una longitud de al menos 2048 bits.

Además, es importante verificar la identidad del servidor antes de realizar una conexión SSL. Esto se puede hacer comparando el certificado del servidor con una fuente de terceros de confianza, como una autoridad de certificación.

Finalmente, también es importante asegurarse de que las conexiones SSL estén configuradas correctamente. Esto incluye asegurarse de que todas las conexiones se realicen utilizando los protocolos y conjuntos de cifrado correctos y que todos los certificados estén debidamente validados.

Siguiendo estos consejos, es posible crear un contexto SSL más seguro, que puede ayudar a proteger los datos confidenciales y garantizar que las comunicaciones se mantengan privadas.

import ssl

context = ssl._create_unverified_context()
urllib.request.urlopen(req, context=context)

Solucione el error SSL: CERTIFICATE_VERIFY_FAILED creando un contexto HTTP no verificado en SSL

En SSL, se puede crear un contexto HTTP no verificado simplemente omitiendo la verificación del certificado del servidor. Esto no se recomienda, ya que deja al cliente vulnerable a los ataques de intermediarios.

Sin embargo, puede ser necesario en algunos casos, como cuando se conecta a un servidor que usa un certificado autofirmado.

import ssl

ssl._create_default_https_context = ssl._create_unverified_context
urllib2.urlopen("https://google.com").read()

Solucione el error SSL: CERTIFICATE_VERIFY_FAILED con el comando pip

Para actualizar su certificado SSL con pip, asegúrese de tener instalada la última versión de pip. Puede hacer esto ejecutando el siguiente comando:

pip install --upgrade pip

Una vez que tenga la última versión de pip, puede ejecutar el siguiente comando para actualizar su certificado SSL:

pip install --upgrade certifi

Si necesita actualizar su certificado SSL por una razón específica, puede usar la opción --force-reinstall con el comando pip. Esto obligará a pip a reinstalar el paquete certificado y sobrescribir cualquier archivo existente:

pip install --upgrade certifi --force-reinstall

Solucione el error SSL: CERTIFICATE_VERIFY_FAILED utilizando el módulo de solicitudes

La biblioteca de solicitudes de Python es una gran herramienta para realizar solicitudes HTTP. A veces, es posible que deba configurar la opción ssl_verify en False para omitir la verificación SSL.

Esto puede ser útil si intenta conectarse a un servidor con un certificado SSL no válido o autofirmado. Tenga en cuenta que, por lo general, no se recomienda establecer esta opción en “False”, ya que puede dejarlo vulnerable a los ataques de intermediarios.

requests.get(url, headers=Hostreferer, verify=False)

Conclusión

SSL es un protocolo que da seguridad y confianza entre un servidor y un cliente. Se usa en muchos casos en los que debe proteger la información confidencial, como cuando usa su tarjeta de crédito en una tienda.

¿Cuál es el problema? Hay un problema con la biblioteca python-requests al usar SSL.

Cuando usa Python para solicitar a un servidor que usa SSL, la biblioteca, de manera predeterminada, verificará el certificado para asegurarse de que sea confiable. El problema es que la instalación predeterminada de Python no incluye un certificado raíz para todos los certificados SSL posibles.

Cuando realiza solicitudes a servidores que usan certificados SSL autofirmados o certificados de una CA que no está en el almacén de certificados de Python, esto hará que las solicitudes fallen. Se generará un error HTTP con el código de error del error SSL.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Error