【问题标题】:SSL v3 Handshake Failure (but only in newer versions of OpenSSL)SSL v3 握手失败(但仅在较新版本的 OpenSSL 中)
【发布时间】:2017-05-25 21:29:40
【问题描述】:

Python 3.5 中的这个基本 sn-p,带有特定网站,失败并显示 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

【问题讨论】:

  • 支持的密码发生了变化,默认情况下启用,它也可能触发特定站点中的错误。只有在您提供相关 URL 时才能说得更多。
  • @SteffenUllrich 我已将 URL 编辑到原始帖子中。

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


【解决方案1】:

服务器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 密码套件现在被归类为“弱”密码,并且 默认禁用。 可以使用 启用-weak-ssl-ciphers 选项配置。

【讨论】:

  • enable-weak-ssl-ciphers 选项运行良好,我通知站点管理员他们的站点不安全。谢谢!
猜你喜欢
  • 2017-03-10
  • 2017-02-25
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多