Error de SSL: rutinas: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado

Tengo un gran número de enlaces de descarga de archivos en un archivo txt . Estoy intentando escribir una secuencia de comandos de python para descargar todos los archivos a la vez, pero termino con el siguiente error:

 SSLError: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

El archivo se está descargando a través de la intranet.

Intenté descargar el archivo a través del navegador y obtuve un mensaje emergente con some certificate . Traté de buscarlo en google pero no encontré una manera de resolver esto.

El certificado del servidor no es válido, ya sea porque está firmado por una CA no válida (CA interna, autofirmada, …), no coincide con el nombre del servidor o porque está vencido.

De cualquier manera, debe encontrar cómo decirle a la biblioteca de Python que está utilizando que no debe detenerse en un certificado no válido si realmente desea descargar archivos de este servidor.

Experimenté esto mismo al usar requests :

Esto es extremadamente inseguro; utilizar solo como ultimo recurso (Ver el comentario de rdlowrey.)

 requests.get('https://github.com', verify=True) 

Hacer eso verify=False hizo el truco para mí.

Compré este problema hoy y, después de vagar por varias horas, acabo de saber que la fecha y hora de mi servidor no era correcta.

Entonces, primero revise la fecha y hora de su servidor antes de profundizar en este problema.

tambien trata de hacer

 >> sudo update-ca-certificates 

Recibí este mismo error recientemente en una aplicación de Python utilizando solicitudes en Ubuntu 14.04LTS, que pensé que se estaba ejecutando bien (tal vez lo fue y ocurrió alguna actualización). Haciendo los siguientes pasos me lo arreglé:

 pip install --upgrade setuptools pip install -U requests[security] 

Aquí hay una referencia: https://stackoverflow.com/a/39580231/996117

También podría suceder cuando su hora local está desactivada (por ejemplo, antes de la hora de validación del certificado), este fue el caso en mi error …

He experimentado el mismo problema debido a la librería certifi . Instalar una versión diferente también me ayudó.

Normalmente, la actualización de certifi y / o el archivo cacert.pem funcionaría. También tuve que actualizar mi versión de python. Vs. 2.7.5 no estaba funcionando debido a la forma en que maneja las solicitudes de SNI.

Una vez que tenga un archivo pem actualizado, puede realizar su solicitud http utilizando:

requests.get(url, verify='/path/to/cacert.pem')