问题描述
我有一台旧服务器,仅接受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),或要求服务器操作员这样做。