2017-01-11 50 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'選項完美運行,並且我通知網站管理員他們的網站不安全。謝謝! –