是否可以在Ruby中启用TLS v1.2?如果是这样,怎么样?

lca*_*ter 21 ruby ssl openssl

是否可以在Ruby中使用TLSv.1.2或TLSv1.1?

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

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

emb*_*oss 36

是的,我们最近添加了TLS 1.1和1.2支持.它就像设置ssl_version你的一样简单SSLContext:

ctx = OpenSSL::SSL::SSLContext.new
ctx.ssl_version = :TLSv1_2
Run Code Online (Sandbox Code Playgroud)

您仍可以继续使用更通用:SSLv23的最大互操作性.它将产生对等体支持的最新协议将用于连接的效果.如果你的同伴理解TLS 1.2,那么它将被使用.但是,相对于上面的示例,如果对方不说话1.2,然后实施将无声地回落到最佳/最新版本,同行理解-而在上面的例子中,连接将由如果对方拒绝不承认1.2.

对于进一步的细节,也看看OpenSSL的自己的文档关于这个问题,你可以将什么东西被说一下TLSv1_method到TLSv1_1_method和TLSv1_2_method(Ruby中的代表:TLSv1,:TLSv1_1:TLSv1_2分别).

如果您的基础OpenSSL支持TLS 1.2(> = 1.0.1),那么您就可以了.但是,这需要当前从trunk创建Ruby.但如果我们在此期间没有得到任何负面反馈,那很可能会被推迟到下一个1.9.3版本.

  • 有没有办法使用TLS1.0/1.1/1.2但禁用SSLv2/v3客户端?看起来如果使用`:TLSv1_2`,你将打破任何不支持TLS1.2的服务器,但唯一的回退方法是`:SSLv23`,这对于防止回退到SSLv3没有用.值得指出的是:"SSLv23"的"最大互操作性"是以暴露于BEAST和POODLE攻击为代价的,并且可能没有人应该使用它. (11认同)
  • 我有ruby 2.3并收到此错误,“ / usr / lib / ruby​​ / 2.3.0 / openssl / ssl.rb:125:in'ssl_version =':未知的SSL方法'TLSv1.2'。(ArgumentError)“ (2认同)