以下是SSLError using requests for python的后续内容:
我刚刚在Mac OSX 10.8.5上安装了requests
。在缺少证书时,我第一次尝试执行requests.get
失败:
SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
上面的线程说要查找/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/cacert.pem
,但实际上我甚至没有.../site-packages/requests
目录。我不清楚这是否应该由安装添加(我使用了pip
)
更多的线程和requests
文档说要安装certifi
,我就这么做了。但现在我得到了一个不同的错误:
python -c 'import requests; requests.get("https://api.github.com/events")' /usr/lib/anaconda/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Traceback (most recent call last):
...
File "/usr/lib/anaconda/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm
谢谢!
注意,您正在使用
HTTPS
。如Requests manual所述以下是解决这个问题的几种方法:
更新OpenSSL(可能会解决您的问题)
摘自here:
通过
检查您的openssl
版本如果您的版本小于
OpenSSL0.9.8o
,则必须更新其版本(OS X):如果不起作用,请这样做:
OS X 10.10.3
之前安装的openssl
有问题,重新安装可以修复它openssl
,从硬盘中删除其文件夹并重新安装(更新版本)安装
certifi
取自here
换句话说,如果您有
Request 2.4.0
或更新版本,请尝试安装certifi
:希望这能解决问题。
使用不同版本的OpenSSL并请求
使用Google进行调查,我发现Python 2中的OpenSSL有一个问题:
但是,我使用的是
Python 2.7.6
、Requests 2.2.1
和OpenSSL 1.0.1f 6 Jan 2014
,一切都正常运行。通过证书
在其他情况下,如果主机的证书是由您签名的,则可能需要告诉
requests.get
证书文件的路径。将verify参数设置为False(不推荐!)
为了避免证书验证,必须将
verify=False
传递给request.get
方法。或来自
script.py
文件:终端:
重要的:非常糟糕的主意;您可能受到MITM攻击,这是一个严重的安全漏洞。
相关问题 更多 >
编程相关推荐