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
。
答案 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选项配置。