首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python : https://gcm-http.googleapis.com上糟糕的握手

Python : https://gcm-http.googleapis.com上糟糕的握手
EN

Stack Overflow用户
提问于 2017-07-14 19:40:02
回答 1查看 3K关注 0票数 1

试图向GCM发出Python请求,但没有验证证书。

更新请求和证书包。

  • Python 2.7.6
  • certifi==2017.4.17
  • requests==2.18.1
  • pyOpenSSL==17.1.0

尝试调用其他服务器并返回是可以的:

错误消息:错误握手:错误(‘SSL例程“,’SSL_GET_SERVER_‘,’证书验证失败‘)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-15 00:30:51

在研究这个问题时,我发现了一些有趣的结果。在我看来,这可能就是问题所在。让我知道。

TL;DR

尝试使用certifi.old_where()。如果这样做有效,那么您确实应该升级到服务器上的一个更新版本的OpenSSL。

资料来源

GitHub:

https://github.com/certifi/python-certifi/issues/32

地址:@Lukasa

你能确认这是否和#26一样的问题吗?也就是说,尝试将certifi.old_where()传递给请求的验证参数。 ..。 首先要说明的是,除了使用certifi.old_where()或升级OpenSSL之外,Python没有其他修复方法。您的系统上的OpenSSL太旧了,无法正确验证交叉签名的TLS证书,而三种方法无法在我的终端解决这个问题。如果使用certifi.old_where(),您的系统将面临很大的风险,因为您将继续将您的信任建立在1024位RSA证书的基础上,这些证书自2012年以来一直被废弃,并且已经受到了几次已知的攻击。

证书医生:

https://pypi.python.org/pypi/certifi

1024位根证书 浏览器和证书管理机构已经得出结论,对于证书,特别是根证书,1024位密钥是不可接受的弱值。由于这个原因,Mozilla从其包中删除了任何弱证书(即1024位密钥),将其替换为来自同一个CA的等效强证书(即2048位或更大密钥)。因为Mozilla从其包中删除了这些证书,所以证书也删除了它们。 不幸的是,OpenSSL的旧版本(小于1.0.2)有时无法验证使用强根的证书链。因此,如果无法使用certifi.where()机制验证证书,则可以通过调用certifi.old_where()来有意地将1024位根重新添加到包中。在生产中不推荐这样做:如果可能的话,您应该升级到更新的OpenSSL。但是,如果您没有其他选择,这可能对您有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45110498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档