gpt4 book ai didi

python - 解决 "ssl certificate verify failed"错误

转载 作者:行者123 更新时间:2023-11-28 18:35:16 25 4
gpt4 key购买 nike

在 Windows Vista SP2 + Python 2.7.10 上,我可以连接到 https://www.python.org , 但不是 https://codereview.appspot.com

脚本:

HOST1 = 'https://www.python.org'
HOST2 = 'https://codereview.appspot.com'

import urllib2
print HOST1
urllib2.urlopen(HOST1)
print HOST2
urllib2.urlopen(HOST2)

输出:

E:\>py test.py
https://www.python.org
https://codereview.appspot.com
Traceback (most recent call last):
File "test.py", line 9, in <module>
urllib2.urlopen(HOST2)
File "C:\Python27\lib\urllib2.py", line 158, in urlopen
return opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 435, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 453, in _open
'_open', req)
File "C:\Python27\lib\urllib2.py", line 413, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1244, in https_open
context=self._context)
File "C:\Python27\lib\urllib2.py", line 1201, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

我该如何排除故障,https://codereview.appspot.com/ 到底出了什么问题? ?

最佳答案

我的猜测是它与 OpenSSL 中的替代链处理有关,如 Python Urllib2 SSL error 中的详细描述.尽管 Python 使用 Windows CA 存储来获取受信任的根证书,但信任链本身的验证是在 OpenSSL 中完成的。

根据 "Python 2.7.10 Released" Windows 上的 Python 2.7.10 包括 OpenSSL 1.0.2a,但有关替代链的修复仅在 1.0.2b 中完成(之后必须快速修复,因为它们包含严重的安全漏洞)。

如果您查看 SSLLabs report for codereview.appspot.com您可以看到有多个信任链可能会导致问题。与此相反 python.org只有一个信任链。

要解决此问题,可能需要使用您自己的根 CA 存储,其中必须包含“/C=US/O=Equifax/OU=Equifax Secure Certificate Authority”的证书才能正确验证 codereview.appspot.com .可以查到证书here你可以用cafile parameter给它到 urllib2.urlopen

关于python - 解决 "ssl certificate verify failed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33140382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com