美文网首页
ruby 2.4 rest-client 1.8 error

ruby 2.4 rest-client 1.8 error

作者: 麦克 | 来源:发表于2017-08-13 12:03 被阅读189次

    错误信息:

    KeyError: key not found: :ciphers

    from /Users/mike/.rvm/gems/ruby-2.4.0@sa/gems/rest-client-1.8.0/lib/restclient/request.rb:163:in `fetch'

    from /Users/mike/.rvm/gems/ruby-2.4.0@sa/gems/rest-client-1.8.0/lib/restclient/request.rb:163:in `initialize'

    from /Users/mike/.rvm/gems/ruby-2.4.0@sa/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in `new'

    from /Users/mike/.rvm/gems/ruby-2.4.0@sa/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in `execute'

    原因:

    https://github.com/rest-client/rest-client/issues/569

    RestClient checks for weak ciphers onOpenSSL::SSL::SSLContext::DEFAULT_PARAMSbut ciphers param was removed from the defaults for openssl 2.0 built with OpenSSL version 1.1.0 or newer, since it was a workaround for OpenSSL bad DEFAULT. See PRruby/openssl#66

    So for ruby 2.4 and openssl 2.0.2 built with OpenSSL 1.1.0 I'm gettingKeyError: key not found: :ciphers.

    One way of checking for default ciphers with openssl built with OpenSSL 1.1.0 is

    OpenSSL::SSL::SSLContext.new.ciphers.map { |v,_,_,_,_| v }.join(':')

    修改:

    参考:

    https://github.com/rest-client/rest-client/pull/572/commits/ec58882a81f2ca6a8d1944d090dfdc71c58a9b49

    注释这两行,

    ifWeakDefaultCiphers.include?(

    OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.fetch(:ciphers))

    修改为:

    ifdefined?(OpenSSL::OPENSSL_LIBRARY_VERSION)&&

    OpenSSL::OPENSSL_LIBRARY_VERSION.start_with?("OpenSSL 1.1")

                ciphers=OpenSSL::SSL::SSLContext.new.ciphers.map(&:first).join(':')

    else

                ciphers=OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.fetch(:ciphers)

    end

    ifWeakDefaultCiphers.include?(ciphers)

    相关文章

      网友评论

          本文标题:ruby 2.4 rest-client 1.8 error

          本文链接:https://www.haomeiwen.com/subject/liosrxtx.html