当前位置: 首页 > 面试题库 >

解决“ ssl证书验证失败”错误

万俟高峻
2023-03-14
问题内容

在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”,Windows上的Python 2.7.10包含OpenSSL
1.0.2a,但有关替代链的修复仅在1.0.2b中完成(此后必须快速修复,因为它们包含严重的安全漏洞)。

如果查看codereview.appspot.com的SSLLabs报告,您会发现存在多个信任链,很可能会导致问题。与此相反,python.org只有一个信任链。

要变通解决此问题,可能需要使用您自己的根CA存储,该存储必须包含“ / C = US / O = Equifax / OU =
Equifax安全证书颁发机构”的证书,才能正确验证codereview.appspot.com。可以在此处找到该证书,并且可以将其与cafilehtml" target="_blank">参数一起提供给该证书urllib2.urlopen



 类似资料:
  • 误差 PHP警告:stream_socket_client():SSL操作失败,代码为1。OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_Server_Certifice:证书验证失败

  • 问题内容: 这段代码 给我这个错误 我对SSL几乎一无所知,但我曾尝试下载该站点的证书并使用该选项指向该文件,但是它没有用。我想念什么吗? 问题答案: 正如评论中已经指出的那样:从SSLLabs报告中可以看出,该网站的SSL实施不正确。该报告中有关您的问题的主要部分是: 该服务器的证书链不完整。等级上限为B。 这意味着服务器没有发送验证证书所需的完整证书链。这意味着您需要在验证时自行添加丢失的证书

  • 我不能通过pip安装安装任何外部python模块。我已经正确安装了python,但如果我使用pip_install它显示我这个错误。 下面是我运行

  • 我在Windows上设置了Rails项目和数据库,一些宝石丢失了。当试图安装他们我得到以下错误: 我试过了 https://gist.github.com/luislavena/f064211759ee0f806c88 和 SSL错误安装rubygem时,无法从https://rubygems.org/ 但这些都没有奏效。有什么想法吗?

  • 我正在练习'Web Scraping with Python'中的代码,我一直遇到这个证书问题: 错误是: 顺便说一句,我也在练习scrapy,但一直遇到问题:command not found:scrapy(我在网上尝试了各种解决方案,但都没有奏效……真令人沮丧)