【问题标题】:Is it possible to enable TLS v1.2 in Ruby? If so, how?是否可以在 Ruby 中启用 TLS v1.2?如果是这样,怎么做?
【发布时间】:2012-06-19 00:26:49
【问题描述】:

是否可以将 TLSv.1.2 或 TLSv1.1 与 Ruby 一起使用?

我使用 OpenSSL 1.0.1c(可用的最新版本)编译了 Ruby 的 Frankenstein 版本,唯一的区别是 SSLv2 现在是 OpenSSL::SSL::SSLContext::METHODS 下的一个选项

是否可以将 TLSv1.2 添加到该列表中?

【问题讨论】:

  • 一个相关的先决条件是 OpenSSL 1.0.0 及更高版本。 OpenSSL 0.9.8提供协议或密码套件。

标签: ruby openssl ssl


【解决方案1】:

是的,我们添加了 TLS 1.1 和 1.2 支持 recently。就像在 SSLContext 上设置 ssl_version 一样简单:

ctx = OpenSSL::SSL::SSLContext.new
ctx.ssl_version = :TLSv1_2

您仍可以继续使用更通用的:SSLv23 以获得最大的互操作性。它将具有对等方支持的最新协议将用于连接的效果。如果您的对等方理解 TLS 1.2,那么它将被使用。但与上述示例相反,如果对等方不使用 1.2,则实现将默默地回退到对等方确实理解的最佳/最新版本 - 而在上面的示例中,连接将如果它不识别 1.2 则被对端拒绝。

有关更多详细信息,还可以查看 OpenSSL's own docs 关于该主题的内容,您可以将有关 TLSv1_method 的内容转移到 TLSv1_1_method 和 TLSv1_2_method(在 Ruby 中分别表示为 :TLSv1:TLSv1_1:TLSv1_2)。

如果您的底层 OpenSSL 支持 TLS 1.2(>= 1.0.1 支持),那么您就可以开始了。但是,目前这需要从主干构建 Ruby。但如果我们在此期间没有收到任何负面反馈,它很可能会被向后移植到下一个 1.9.3 版本。

【讨论】:

  • 我很想把它向后移植,有什么可以帮忙的吗?
  • 除非在不久的将来会有投诉,否则我很有信心这将被移植到下一个 1.9.3 版本。如果您想加快流程,您可以在bugs.ruby-lang.org/projects/ruby-193 上开一张票,将其分配给我并告诉我反向移植 r35549 和 r35567 :)
  • @emboss 这曾经被向后移植到 1.9.3 吗?
  • 有没有办法使用 TLS1.0/1.1/1.2 但禁用 SSLv2/v3 客户端?看起来如果您使用:TLSv1_2,您将破坏任何不支持 TLS1.2 的服务器,但唯一的回退方法是 :SSLv23,这对于防止回退到 SSLv3 没有用处。最好指出:SSLv23 的“最大互操作性”是以暴露于 BEAST 和 POODLE 攻击为代价的,而且可能没有人应该使用它。
  • 我有 ruby​​ 2.3 并收到此错误,“/usr/lib/ruby/2.3.0/openssl/ssl.rb:125:in ssl_version=': unknown SSL method TLSv1.2'。(ArgumentError)”
猜你喜欢
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
相关资源
最近更新 更多