【问题标题】:Set ssl version with Net::HTTP使用 Net::HTTP 设置 ssl 版本
【发布时间】:2020-09-10 05:47:50
【问题描述】:

我有一台只接受 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 和 Rails 6。谢谢。

【问题讨论】:

    标签: ruby ubuntu ssl openssl ruby-on-rails-6


    【解决方案1】:

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

    如果 SSLv3 是硬性要求,您可能必须首先使用合适的配置选项编译您自己的 OpenSSL 版本,然后针对您的自定义 OpenSSL 编译您的 Ruby。

    您最好更新服务器以支持更新的更安全的协议(例如 TLSv1.2 或 TLSv1.3)或要求服务器的运营商这样做。

    【讨论】:

    • 服务器正在运行 Win 2003 服务器!可能会考虑将服务器升级到至少 2008 R2,因为它似乎支持 TLSv1.2。谢谢。
    • 只是一个更新:升级旧服务器很痛苦,所以最终通过接受较新 TLS 版本的较新服务器使用反向代理。
    猜你喜欢
    • 2014-12-13
    • 2016-11-02
    • 2017-04-16
    • 1970-01-01
    • 2012-08-21
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多