发出请求时python中的SSL认证错误

时间:2019-03-22 17:10:09

标签: python ssl python-requests gspread

我正在使用gspread访问Google电子表格,但显示SSLError。

当我使用请求库时,发生了类似的事情。

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']

credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)

gc = gspread.authorize(credentials)`

错误是:

SSLCertVerificationError                  Traceback (most recent call last)
<ipython-input-1-87ec55398e31> in <module>
      7 credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
      8 
----> 9 gc = gspread.authorize(credentials)


SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)

1 个答案:

答案 0 :(得分:0)

它可以与requests == 2.21.0certifi == 2018.11.29一起使用,因此我首先要检查的是您使用的版本是否较旧(尤其是certifi)。

此外,如果这是由 certifi 引起的,则应该可以通过将 requests 使用的信任库重置为共享系统信任库来解决。通过运行路径:

python3 -c 'import ssl; print(ssl.get_default_verify_paths())'

寻找cafileopenssl_cafile的值,然后(将$cafile替换为获得的值):

export REQUESTS_CA_BUNDLE=$cafile

另请参阅this bug