SSL v3握手失败(但仅限于较新版本的OpenSSL)

时间:2017-01-11 07:24:58

标签: python python-3.x ssl openssl python-requests

Python 3.5中的这个基本代码段(带有特定网站)因requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:720)

而失败
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 :(得分: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密码套件        默认情况下已禁用并从DEFAULT中删除,就像RC4一样。        请参阅下面的RC4项目以重新启用这两项        ...
       基于RC4的libssl密码套现在被归类为“弱”密码并且是        默认情况下禁用。 可以使用。重新启用它们        configure-weak-ssl-ciphers选项配置。