尽管存在最新的依赖关系,但Python请求仍会出现SSL错误

我收到SSL“坏握手”错误.对此问题的大多数类似响应似乎源于旧库,1024位证书.不兼容等等……我想我已经及时了,并且无法弄清楚为什么我会收到这个错误.

建立:

>请求2.13.0
> certifi 2017.01.23
>’OpenSSL 1.0.2g 2016年3月1日’

我正在使用此API(2048位证书密钥):https://api.sidecar.io/rest/v1/provision/application/device/count/

并收到此错误
requests.exceptions.SSLError :(“握手不好:错误([(‘SSL例程’,’ssl3_get_server_certificate’,’证书验证失败’)],)”,)

https://github.com/sidecar-io/sidecar-python-sdk/blob/master/sidecar.py的第44页

如果我在请求中转为verify = False,我可以绕过,但我宁愿弄清楚认证失败的原因.

任何帮助是极大的赞赏;谢谢!

验证失败,因为您访问的服务器设置不正确,即它不是您的设置或代码错误.看看你看到的 report from SSLLabs

This server’s certificate chain is incomplete. Grade capped to B.

这意味着服务器将缺少中间证书的证书链发送到受信任的根,因此您的客户端无法构建信任链.大多数桌面浏览器通过尝试从其他地方获取缺少的证书来解决此问题,但在这种情况下,正常的TLS库将失败.您需要明确地将缺失的链证书添加为受信任以解决此问题:

import requests
requests.get('https://api.sidecar.io',verify = 'mycerts.pem')

mycerts.pem应包含缺少的中间证书和受信任的根证书. mycerts.pem的测试版本可以在http://pastebin.com/aZSKfyb7找到.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...