2013-06-13 31 views
24

Ho un numero elevato di collegamenti per il download di file in un file txt. Sto cercando di scrivere uno script python per scaricare tutti i file in una sola volta, ma io alla fine con il seguente errore:Errore SSL: routine: SSL3_GET_SERVER_CERTIFICATE: verifica certificato non riuscita

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

Il file viene scaricato tramite intranet.

Ho provato a scaricare il file tramite browser e ho ottenuto un pop-up con some certificate. Ho provato a google ma non ho trovato un modo per risolvere questo.

risposta

19

Il certificato del server non è valido, perché è firmato da una CA non valida (CA interna, autofirmato, ...), non corrisponde al nome del server o perché è scaduto.

In entrambi i casi, è necessario trovare come dire alla libreria Python che si sta utilizzando che non deve fermarsi a un certificato non valido se si desidera veramente scaricare file da questo server.

+0

Proverò a fare questo !!! grazie @Remi gacogne – Sangamesh

+0

Prego. Se risolve il tuo problema, contrassegna la risposta come accettata. Comunque ti auguro buona fortuna. –

+0

Ho provato a trovare un modo basato su quello che hai suggerito ma non riesco a trovare qualcosa che possa risolvere il mio problema. Se provo a scaricare il file tramite Chrome, viene visualizzato un singolo segno sulla convalida del certificato. Pensi che questo potrebbe essere il problema ?? grazie – Sangamesh

14

sperimentato questo me stesso quando si utilizza requests:

Ciò è estremamente insicura; utilizzare solo come ultima risorsa! (Vedi il commento di rdlowrey.)

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

Fare che verify=False ha fatto il trucco per me.

+42

Questo è un approccio molto ** subottimale **. Disabilitare semplicemente la verifica tra colleghi è straordinariamente insicuro e ti lascia completamente aperto agli attacchi di Man-in-the-Middle. Questa * non * è una "soluzione". – rdlowrey

+6

Certo, ma a volte non hai scelta. –

+0

Non ho altra scelta che questa soluzione. –

12

Ho ricevuto questo problema oggi e dopo aver vagato per diverse ore ho appena saputo che il mio server datetime era sbagliato.

Quindi per prima cosa controllare il server datetime prima di andare così in profondità in questo numero.

provare anche facendo

>> sudo update-ca-certificates 
+2

Stava testando le date di impostazione del materiale in futuro. Questo è GOLD. –

+2

questo funziona davvero per me, ho avuto lo stesso problema con parse SDK. –

0

ho sperimentato lo stesso problema a causa di certifi biblioteca. Anche l'installazione di una versione diversa mi ha aiutato.

-4
#disable SERVER_CERTIFICATE verify with insecure 
wget url --insecure 
0

Normalmente l'aggiornamento di certifi e/o del file certificato cacert.pem funzionerebbe. Ho anche dovuto aggiornare la mia versione di Python. Vs. 2.7.5 non funzionava a causa di come gestisce le richieste SNI.

Una volta che si dispone di un fino a file di data PEM è possibile effettuare la richiesta HTTP utilizzando:

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

0

potrebbe anche accadere quando l'ora locale è spento (ad esempio, prima che il tempo di convalida del certificato), questo è stato il caso nel mio errore ...

Problemi correlati