ошибка pycurl 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 в своем браузере, я вижу, что его подлинность подтверждена. Почему это так? Как заставить pycurl использовать те же сертификаты, которые использует мой браузер? введите здесь описание изображения


person prongs    schedule 24.04.2013    source источник
comment
связанные: stackoverflow.com/questions/8332643/pycurl-and-ssl-cert   -  person Ashwini Chaudhary    schedule 24.04.2013


Ответы (1)


Проблема в том, что pycurl нужна актуальная цепочка сертификатов для проверки сертификатов ssl.

Хорошим решением было бы использовать certifi.

По сути, это актуальная копия встроенной цепочки сертификатов Mozilla, завернутая в пакет Python, который можно обновлять с помощью 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()
person mata    schedule 24.04.2013