2016-01-15 15 views
6

Al momento sto facendo fatica a ottenere la libreria requests per eseguire una semplice richiesta GET su un sito con un certificato Let's Encrypt. Tutto sta bene con il sito e posso accedervi da Chrome bene. (Al momento sto eseguendo OSX El Capitan).Richieste SSL Python e Let Encrypt certs

Per prima cosa ho provato a fare una richiesta GET al sito:

>>> import requests 
>>> requests.get('https://example.com') 

Questo mi dà:

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 

Allora ho provato varie cose, tra cui entrare in possesso del Let's Encrypt authority certificate, e il seguente openssl comando verifica il certificato del mio sito con esito positivo:

> openssl s_client -CAfile ./letsencryptauthorityx1.pem -connect example.com:443 

L'uscita che includeva il seguente verso il basso:

... 
SSL-Session: 
    Protocol : TLSv1 
    Cipher : DHE-RSA-AES256-SHA 
    Session-ID: ... 
    Session-ID-ctx: 
    Master-Key: ... 
    Key-Arg : None 
    Start Time: 1452865123 
    Timeout : 300 (sec) 
    Verify return code: 0 (ok) 
--- 

Forse mi manca qualcosa qui, ma sembra a me come se il mio sito è stato verificato in base al certificato di autorità Encrypt del Let ho fornito. Così, ho felicemente cambiato il mio codice Python a:

>>> requests.get('https://example.com', verify='./letsencryptauthorityx1.pem') 

Ma io ancora continuo a ricevere l'errore requests.exceptions.SSLError. Ho anche provato utilizzando il formato DER del certificato di autorità, ma poi ho il seguente errore da requests:

requests.exceptions.SSLError: unknown error (_ssl.c:2825) 

Qualcuno può forse educare me su come fare per correggere questo?

risposta

2

Sembra che CA CERTS sulla macchina non sia aggiornato o il server Web non sia configurato per il server dell'intera catena di certificati.

+0

sto usando OSX (El Capitan). Ho provato ad aggiungere il certificato ISRG Root X1 (come per https://support.apple.com/kb/PH18677?locale=en_US) e l'ho reso completamente affidabile nell'intero sistema, ma continua a generare lo stesso errore CERTIFICATE_VERIFY_FAILED. –

+0

Puoi inviare come messaggio privato il tuo nome host con quella certificazione? Ho appena reinstallato il mio Mac usando MAC OS X El Capitan e funziona immediatamente senza installare CA. Penso che il web server non sia configurato correttamente per usare la catena di certificati completa. Il motivo per cui non sta fallendo con openssl è perché si dà la CA direttamente sulla CLI. –

+0

Hai ragione davvero. Se configuro il web server per usare la catena completa di cert, funziona come un incantesimo! Modifica la tua risposta qui o aggiungi una risposta diversa, per includere i consigli sull'utilizzo della catena di certificati completa nel server Web e la contrassegnerò come accettata. –