当我尝试在urllib3中使用过时的TLS1.1的站点时,会引发以下错误:
>>> import urllib3
>>> http = urllib3.PoolManager()
>>> r = http.request('GET', 'https://site/')
SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:646)urllib3似乎正在尝试与SSL3握手,但正如我所提到的,这个站点使用TLS1.1。
我是否必须指定我不使用TLS1.1?我该怎么做呢?
我发现了一个名为ssl_version的参数(它可以在PoolManager构造函数中传递),默认为PROTOCOL_SSLv23。但我并没有在urllib3.util.ssl_中找到类似于urllib3.util.ssl_的东西。实际上,以PROTOCOL_开头的惟一变量是默认选项。
发布于 2015-10-21 18:47:42
urllib3似乎正在尝试与SSL3握手,但正如我所提到的,这个站点使用TLS1.1。
该站点仍然支持SSL3.0(也支持TLS 1.0和TLS 1.1),因此我怀疑这是问题所在。我认为问题更多的是服务器只支持不安全的密码RC4-SHA,它被排除在默认的urllib3密码集之外。另见Why does Python requests ignore the verify parameter?。
https://stackoverflow.com/questions/33266539
复制相似问题