为了账号安全,请及时绑定邮箱和手机立即绑定

Python Urllib2 SSL错误

Python Urllib2 SSL错误

胡子哥哥 2019-11-18 18:30:10
Python 2.7.9现在对SSL证书验证更加严格。太棒了!对于以前运行的程序现在出现CERTIFICATE_VERIFY_FAILED错误,我并不感到惊讶。但是我似乎无法使它们正常工作(没有完全禁用证书验证)。一个程序正在使用urllib2通过https连接到Amazon S3。我将根CA证书下载到名为“ verisign.pem”的文件中,然后尝试以下操作:import urllib2, sslcontext = ssl.create_default_context()context.load_verify_locations(cafile = "./verisign.pem")print context.get_ca_certs()urllib2.urlopen("https://bucket.s3.amazonaws.com/", context=context)即使根CA在第4行中正确打印,我仍然会收到CERTIFICATE_VERIFY_FAILED错误。openssl可以很好地连接到该服务器。实际上,这是我用来获取CA证书的命令:openssl s_client -showcerts -connect bucket.s3.amazonaws.com:443 < /dev/null我拿了链中的最后一个证书,并将其放在PEM文件中,openssl看起来不错。这是带有以下内容的Verisign证书:Serial number: 35:97:31:87:f3:87:3a:07:32:7e:ce:58:0c:9b:7e:daSubject key identifier: 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33SHA1 fingerprint: F4:A8:0A:0C:D1:E6:CF:19:0B:8C:BC:6F:BC:99:17:11:D4:82:C9:D0有什么想法如何使它与启用验证一起工作吗?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

这是一个很好的答案,我已将其标记为正确。谢谢!我的实际错误是通过证书[2]并期望验证证书链(也尝试过[0]和[1])。我以为[2]是根证书。我不知道要寻找[OT]还是在哪里找到它。一旦您告诉我指纹,我就可以在/usr/local/share/certs/ca-root-nss.crt(FreeBSD)中找到它,但是我也可以在Firefox中找到它或从Verisign下载它。但是您怎么知道哪一个根证书是正确的呢?浏览器是否通过发行者字符串识别它们?

查看完整回答
反对 回复 2019-11-18
  • 2 回答
  • 0 关注
  • 768 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信