pycurl https错误:无法获得本地颁发者证书

pro*_*ngs 12 python windows ssl ssl-certificate pycurl

错误的屏幕截图

>>> 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()
>>>
>>>
Run Code Online (Sandbox Code Playgroud)

为什么无法获得本地发行人证书?我该如何解决这个问题?当我在浏览器中打开quora.com时,我发现它的身份已经过验证.为什么会这样?如何让pycurl使用我的浏览器使用的相同证书? 在此输入图像描述

mat*_*ata 17

问题是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()
Run Code Online (Sandbox Code Playgroud)