使用Net :: HTTP设置SSL版本

问题描述

我有一台旧服务器,仅接受SSLv3和SSLv3。我想在发出请求时设置ssl版本。

http = Net::HTTP.new(@request.uri.host,@request.uri.port)
http.use_ssl = @request.uri.scheme == 'https'
http.ssl_version = :SSLv3
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

导致

[2020-09-10T05:37:14.452819 #254200] FATAL -- :   
OpenSSL::SSL::SSLError (SSL_CTX_set_min_proto_version):

我尝试了其他组合,但失败了。 http.ssl_version = :SSLv3 http.ssl_version = "SSLv3"

如何设置特定的ssl版本?我正在使用Ruby 2.7.1和Rails6。谢谢。

解决方法

在大多数最新版本的OpenSSL中,由于该协议被广泛认为是不安全的,因此在编译期间会静态禁用对SSLv3的支持。因此,通常无法在那些OpenSSL版本上仍然使用SSLv3。

如果对SSLv3的要求很高,则可能必须先使用适当的配置选项编译自己的OpenSSL版本,然后再根据自定义OpenSSL编译Ruby。

最好,您应该更新服务器以支持较新的更安全的协议(例如TLSv1.2或TLSv1.3),或要求服务器操作员这样做。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...