繁体   English   中英

使用Net :: HTTP和Ruby 1.8.7更改ssl版本

[英]Change ssl version with Net::HTTP and Ruby 1.8.7

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

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

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

在Ruby的opensslssl-internal.rb )中,有一种方法可以更改版本。 遗憾的是,这不是由Net::HTTPhttps.rb公开的

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM