import requests
s = requests.session()
print(s.get('https://imagetwist.com/')) # print(s.get('https://img119.imagetwist.com/'))
错误:
requests.exceptions.SSLError: HTTPSConnectionPool(host='imagetwist.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))
如果我请求一个子域(https://img119.imagetwist.com/),它可以正常工作
有人能帮帮我吗,tks
Python 3.6.9、ubuntu 18.04.1
该错误说明无法验证
HOST
的SSL
证书因此,对于这种情况,您必须使用
verify=False
检查SSL CERT Verification
这里是Disable SSL Warnings
更新
我冒昧地联系imagetwist.com,让他们知道这个问题。不到一小时,他们就用一个完整的证书链解决了这个问题。真是太好了强>
类似问题的冗余调试信息:
imagetwist.com的服务器配置不正确-它没有向共享的受信任CA提供完整的证书链。 虽然Chrome(和其他浏览器)将填补空白,但Python的库无法做到这一点
比较以下方面的结果:
通常,服务器将提供一个证书列表,该列表将“同步”到ca_捆绑包中的证书颁发机构证书(包含您和您的计算机识别的ca的文件/目录)
有三种选择:
在imagetwist修复其设置之前,选项3可能是最好的长期解决方案
根据您的Python安装情况,您需要将以下内容添加到您的ca_捆绑包中,这将填充您的计算机上缺少的证书链:
此中间证书来自其正确配置的服务器(img119.imagetwist.com)实例
然后,我用两种方法对其进行了验证:
openssl verify sectigo.crt
curl https://curl.haxx.se/ca/cacert.pem | openssl verify -CAfile /dev/stdin sectigo.crt
两者都会导致:
因此,丢失的中间(Sectigo)证书由苹果默认密钥链和Mozilla的CA包中的“用户信任网络”CA进行验证
相关问题 更多 >
编程相关推荐