Python的 - 问题SSL:CERTIFICATE_VERIFY_FAILED
我想,当我连接到手柄的服务器来解决问题Python的 - 问题SSL:CERTIFICATE_VERIFY_FAILED
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)
。
我也用
ssl._create_default_https_context = ssl._create_unverified_context
一些用户建议,但我没能解决问题。
任何其他解决方案?
感谢
如果你只是想忽略证书验证,requests
接受验证关键字参数用于此目的:
requests.get('https://www.google.com', verify=False)
这可能会触发一个InsecureRequestWarning
,但请求应该可以返回不管。
我刚刚试过这个解决方案:'r = requests.get(url,auth = HTTPBasicAuth(user,pwd),verify = False)'。 httpS返回一个空的响应,而HTTP工作正常。 – Fab
您的服务器是否具有由认证机构签署的有效证书?
如果它使用自签名证书我建议您在Python项目中保存一份公共证书的副本,并在请求的验证参数中传递证书名称。
您可以通过访问Firefox上的服务器,单击地址栏附近的锁定图标,选择证书,然后选择更多详细信息,然后选择查看证书,然后导出来保存证书。
你会得到一个.pem文件,比如说:“my_server_certificate.pem”。
然后当你请求创建Session对象可以传递参数:
session = requests.Session()
session.verify = "my_server_certificate.pem"
我用我的Python脚本查尔斯代理的时候也有类似的问题。我希望这可以帮助你解决你的问题。
我得到'__init __()得到了一个意想不到的关键字参数'verify''。我读过这个Session不再需要构造函数中的参数。目前该文档已过时。我尝试了'session = requests.Session()'和 'session.verify = False',但问题仍然存在。 – Fab
我的不好。是的,你必须创建会话,然后设置session.verify =“my_server_certificate.pem” –
编辑答案来反映这一点。 –
请提供python版本和你的操作系统 – Antwane
@Antwane Centos 7和Python 2.7.5 – Fab
你能解决这个问题吗? –