使用urllib3的TLS1.1的HTTP GET网站

2024-06-17 11:02:08 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图获取这个使用过时的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?我该怎么做?在

我找到了这个名为^{}(可以在PoolManager构造函数中传递)的参数,默认值为PROTOCOL_SSLv23。但我在urllib3.util.ssl_中没有找到类似PROTOCOL_TLSv11的东西。实际上,唯一以PROTOCOL_开头的var是默认选项。在


Tags: httpsimporthttpsslget站点request错误
1条回答
网友
1楼 · 发布于 2024-06-17 11:02:08

It seems that urllib3 is trying to handshake with SSL3, but as I mentioned, this site uses TLS1.1.

该站点仍然支持ssl3.0(也支持tls1.0和tls1.1),所以我怀疑这是问题所在。我认为问题更多的是服务器只支持不安全的密码RC4-SHA,它被排除在urllib3的默认密码集中。 另请参见Why does Python requests ignore the verify parameter?。在

相关问题 更多 >