使用TLS1.1和urllib3

时间:2015-10-21 18:23:02

标签: python python-3.x ssl urllib3

当我尝试获取使用过时的TLS1.1和urllib3的网站时,会出现此错误:

>>> 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。但我在PROTOCOL_TLSv11中找不到类似urllib3.util.ssl_的内容。实际上,唯一以PROTOCOL_开头的var是默认选项。

1 个答案:

答案 0 :(得分:1)

  

似乎urllib3正在尝试与SSL3握手,但正如我所提到的,这个站点使用的是TLS1.1。

该网站仍然支持SSL 3.0(也是TLS 1.0和TLS 1.1),所以我怀疑这是问题所在。我建议问题更多的是服务器只支持从urllib3的默认密码集中排除的不安全密码RC4-SHA。 另请参阅Why does Python requests ignore the verify parameter?