2013-04-24 19 views
7

Screenshot of the errorpycurl https errore: in grado di ottenere il certificato locale dell'emittente

>>> import pycurl 
>>> c = pycurl.Curl() 
>>> c.setopt(c.URL, 'https://quora.com') 
>>> c.perform() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
pycurl.error: (60, 'SSL certificate problem: unable to get local issuer certificate') 
>>> 
>>> c.setopt(c.URL, 'http://quora.com') 
>>> c.perform() 
>>> 
>>> 

Perché è in grado di ottenere il certificato emittente locale? Come lo risolvo? Quando apro quora.com nel mio browser, vedo che la sua identità è verificata. Perché è così? Come faccio a ottenere pycurl per utilizzare gli stessi certificati utilizzati dal mio browser? enter image description here

+0

correlato: http://stackoverflow.com/questions/8332643/pycurl-and-ssl-cert –

risposta

15

Il problema è che pycurl richiede una catena di certificati aggiornata per verificare i certificati ssl.

Una buona soluzione sarebbe utilizzare certifi.

È fondamentalmente una copia aggiornata della catena di certificati incorporata di mozilla racchiusa in un pacchetto python che può essere aggiornato tramite pip. certifi.where() fornisce la posizione del pacchetto di certificati.

Per rendere pycurl per usarlo, impostare l'opzione CAINFO:

import pycurl 
import certifi 

curl = pycurl.Curl() 
curl.setopt(pycurl.CAINFO, certifi.where()) 
curl.setopt(pycurl.URL, 'https://www.quora.com') 
curl.perform() 
Problemi correlati