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?
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. –
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. –
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. –