2017-01-11 713 views
1

这一基本片断在Python 3.5,具有特定的网站,但没有对requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:720)SSL V3握手失败(但只OpenSSL中的较新版本)

import requests 
requests.get("https://ssbp.mycampus.ca/prod_uoit/bwskfshd.P_CrseSchdDetl") 

它可以在Ubuntu 16.04完美的罚款,但完全相同的在Debian Stretch上使用与其所有Python依赖项相同版本的脚本失败。

我试过安装requests[security],它没有区别。 我的安装之间唯一显着的区别是Debian有OpenSSL 1.1.0c 10 Nov 2016,而Ubuntu的版本是OpenSSL 1.0.2g 1 Mar 2016

不知何故,较新版本的OpenSSL必须导致它失败。使用的requests的版本是2.11.1

+1

对受支持的密码进行了更改,默认情况下启用了这些密码,并且还可能触发特定站点中的错误。只有您提供相关网址时才能说明更多内容。 –

+0

@SteffenUllrich我编辑了原始帖子的网址。 –

回答

3

服务器only supports一个旧的密码:DES-CBC3-SHA。此密码被认为是弱(SWEET32),并从OpenSSL 1.1.0的默认版本中删除。由于Debian遵循默认构建,所以在较新的Debian版本上不提供密码。

Changes between 1.0.2h and 1.1.0

为了缓解SWEET32攻击(CVE-2016至2183年),3DES加密套件 已经默认情况下禁用并从默认删除,就像RC4。 请参阅下面的RC4项目以重新启用两者。
...
基于RC4的libssl密码套件现在被归类为“弱”密码,并且默认情况下禁用了 。 可以使用配置中的 enable-weak-ssl-ciphers选项重新启用它们。

+0

不错的发现。谁在2016年只支持DES-CBC3-SHA ... – jww

+0

'enable-weak-ssl-ciphers'选项完美运行,并且我通知网站管理员他们的网站不安全。谢谢! –