2013-04-24 11 views
7

Screenshot of the errorpycurl httpsのエラー:ローカル発行者証明書

>>> 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() 
>>> 
>>> 

なぜそれがローカル発行者証明書を取得することができません取得することができませんでし?これをどうすれば解決できますか?ブラウザでquora.comを開くと、そのIDが確認されていることがわかります。これはなぜですか? pycurlにブラウザで使用するのと同じ証明書を使用するにはどうすればよいですか? enter image description here

+0

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

答えて

15

pycurlには、SSL証明書を確認するための最新の証明書チェーンが必要です。

良い解決策は、certifiを使用することです。

これは基本的に、pythonパッケージに包まれたmozillaの証明書チェーンの最新のコピーで、pipを使って最新の状態に保つことができます。 certifi.where()は、証明書バンドルの場所を示します。

pycurlはそれを使用するようにするには、CAINFOオプションを設定します。

import pycurl 
import certifi 

curl = pycurl.Curl() 
curl.setopt(pycurl.CAINFO, certifi.where()) 
curl.setopt(pycurl.URL, 'https://www.quora.com') 
curl.perform() 
関連する問題