【问题标题】:Change ssl version with Net::HTTP and Ruby 1.8.7使用 Net::HTTP 和 Ruby 1.8.7 更改 ssl 版本
【发布时间】:2014-12-13 00:40:04
【问题描述】:

我的一个旧 Ruby 应用程序仍然使用 Ruby 1.8.7。它在第三方 Web 服务上发出大量 HTTP 请求,其中一些通过 SSL。

由于 POODLE 漏洞,这些第三方服务正在放弃对 SSLv3 的支持,我想修补我的客户端以继续连接到它们。

Ruby 的标准库Net::HTTP 似乎没有办法更改使用的 SSL 版本。

在 Ruby 的 openssl (ssl-internal.rb) 中有一种方法可以更改版本。可悲的是,Net::HTTP (https.rb) 并未公开此内容。

我们(Ruby 1.8.7 的用户)搞砸了吗?

编辑:实际上,如果服务器不支持SSLv3,似乎客户端正在切换到TLSv1。我在 Nginx 后面有一个不支持 SSLv3 的启用 SSL 的网站,并且我已经验证我的 1.8.7 客户端正在切换到 TLSv1 并且请求有效。如果您想自己验证,请看这里:https://serverfault.com/questions/620123/how-can-i-let-nginx-log-the-used-ssl-tls-protocol-and-ciphersuite

【问题讨论】:

    标签: ruby ssl sslv3 poodle-attack


    【解决方案1】:

    实际上,如果服务器不支持 SSLv3,客户端似乎正在切换到 TLSv1

    反之亦然。在 SSL 握手中,客户端向服务器显示它可以做什么(协议、密码),然后服务器也从中挑选出最好的。通常客户端只是默认使用 SSLv23,它不会将客户端本身限制为特定协议。如果服务器随后提供 TLSv1,他们将继续使用它,如果服务器仅提供 SSLv3,他们将使用 SSL 3.0。

    如果您想限制客户端选择最佳但不再允许 SSL 3.0,请查看https://stackoverflow.com/a/24237525/3081018,了解如何通过设置 ssl_options 禁用 SSLv3。

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多