尽管存在最新的依赖项,Python请求仍存在SSL错误
我收到SSL“错误握手”错误。对这个问题最相似的反应似乎来自旧库、1024位证书不兼容等。。。我想我是最新的,不知道为什么会出现这个错误 设置:尽管存在最新的依赖项,Python请求仍存在SSL错误,python,ssl,ssl-certificate,python-requests,Python,Ssl,Ssl Certificate,Python Requests,我收到SSL“错误握手”错误。对这个问题最相似的反应似乎来自旧库、1024位证书不兼容等。。。我想我是最新的,不知道为什么会出现这个错误 设置: 请求2.13.0 certifi 2017.01.23 “OpenSSL 1.0.2g 2016年3月1日” 我正在使用此API(2048位证书密钥): 得到这个错误: requests.exceptions.SSLError:(“握手错误:错误([('SSL例程','ssl3\u获取服务器\u证书','certificate verify fai
- 请求2.13.0
- certifi 2017.01.23
- “OpenSSL 1.0.2g 2016年3月1日”
requests.exceptions.SSLError:(“握手错误:错误([('SSL例程','ssl3\u获取服务器\u证书','certificate verify failed'),),),)
见附件l.44
如果我在请求中打开verify=False
,我可以绕过,但我更愿意找出认证失败的原因
非常感谢您的帮助;谢谢 验证失败,因为您访问的服务器设置不正确,即它不是您的设置或代码的错误。看看你看到的 此服务器的证书链不完整。等级上限为B 这意味着服务器向受信任的根用户发送缺少中间证书的证书链,因此客户端无法构建信任链。大多数桌面浏览器通过尝试从其他地方获取丢失的证书来解决此问题,但在这种情况下,普通TLS库将失败。要解决此问题,您需要将缺少的链证书显式添加为受信任证书:
import requests
requests.get('https://api.sidecar.io', verify = 'mycerts.pem')
mycerts.pem
应包含缺少的中间证书和受信任的根证书。mycerts.pem的测试版本可在中找到。这可能有助于解决您的问题
print(requests.get(url, proxies,verify = False))
我使用python-certifi-win32软件包修复了它:
pip install python-certifi-win32
还是和蟒蛇一起
conda install -c conda-forge python-certifi-win32
然后您可以使用:
requests.get(url)
#or
requests.get(url, verify=True)
并使用Windows证书存储检查证书
这仅在证书安装在Windows证书存储中时有效。因为verify=False会跳过SSL验证。原始问题已经提到将verify=False
作为旁路,但要求提供正确的解决方案。