由 usa 发布于 2014 年 10 月 27 日
我们在 Ruby 2.1.4、Ruby 2.0.0-p594 和 Ruby 1.9.3-p550 中更改了 ext/openssl 的默认设置。通过此更改,不安全的 SSL/TLS 选项现在默认禁用。然而,由于此更改,SSL 连接中可能存在一些问题。
详细信息
由于历史原因,OpenSSL 仍然实现了今天被认为不安全的协议和密码。比如 POODLE 漏洞 (CVE-2014-3566),如果您继续使用具有此类不安全功能的 OpenSSL,您可能无法保证网络通信的安全。因此,基于 Bug #9424 中的讨论,我们决定默认禁用这些不安全的 SSL/TLS 选项。如果您需要取消此更改(如下所示),请应用反向补丁来撤销它。
- 2.1.4
- r48098
- 2.0.0-p594
- r48110
- 1.9.3-p550
- r48121
但是,如果您取消此更改,则存在无法保证网络通信安全的风险。在删除此更改之前,您应该了解此更改的影响。
Ruby 的捆绑库
此更改反映在 net/http、net/imap 和 net/pop 中。由于 DRb 和 WEBrick 单独接收设置,因此此更改不会影响它们。
直接使用 ext/openssl 的脚本
当实例化一个 OpenSSL::SSL::SSLContext
对象并调用实例方法 set_params
时,此更改会生效。
特别是,如下代码:
当使用 ext/openssl 作为客户端时,我们认为此更改可能没有问题。但是,如果您使用 ext/openssl 作为服务器端并反映此更改,一些旧客户端(Windows XP 上的 Internet Explorer 6,旧手机中的浏览器等)可能无法连接到服务器。
是否启用此更改由您决定,请考虑其中的权衡。
解决方法
如果您无法更新 Ruby 但又必须处理不安全的 SSL/TLS 选项,请应用以下猴子补丁:
受此更改影响的版本
- Ruby 1.9.3 patchlevel 550 及更高版本
- Ruby 2.0.0 patchlevel 594 及更高版本
- Ruby 2.1.4 及更高版本
- trunk 的修订版本 48097 及更高版本
历史记录
- 最初发布于 2014-10-27 12:00:00 (UTC)