【问题标题】:SYSCALL returned=5 errno=0 state=SSLv3 read server hello A with Ruby RESTful clientSYSCALL 返回=5 errno=0 state=SSLv3 使用 Ruby RESTful 客户端读取服务器 hello A
【发布时间】:2015-07-11 14:07:52
【问题描述】:

我已经为这个问题苦苦挣扎了一段时间。我正在尝试使用 Rest-Client ruby​​ gem 来使用 SSL 证书访问 API 端点。我确定服务器只响应 TLSv_1_2 和 TLSv_1_1,但是我似乎无法使其工作。 这是代码的sn-p:

resource = RestClient::Resource.new(
                endpoint,
                :ssl_client_cert  => OpenSSL::X509::Certificate.new(File.read(config["cert"])),
                :ssl_client_key   =>  OpenSSL::PKey::RSA.new(File.read(config["key"])),
                :ssl_version      => :TLSv1_2,
                :verify_mode      =>  OpenSSL::SSL::VERIFY_PEER
            )

response = resource.delete(:params => {:name => 'test'})

p endpoint + " | " + response.code.to_s

这就是我得到的:

/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:923:in `connect': SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A (OpenSSL::SSL::SSLError)
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:923:in `block in connect'
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/timeout.rb:74:in `timeout'
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:923:in `connect'
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:863:in `do_start'
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:852:in `start'
from /usr/local/rvm/gems/ruby-2.2.1/gems/rest-client-1.8.0/lib/restclient/request.rb:413:in `transmit'
from /usr/local/rvm/gems/ruby-2.2.1/gems/rest-client-1.8.0/lib/restclient/request.rb:176:in `execute'
from /usr/local/rvm/gems/ruby-2.2.1/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in `execute'
from /usr/local/rvm/gems/ruby-2.2.1/gems/rest-client-1.8.0/lib/restclient
from test.rb:47:in `<main>'

我已经关注this 有一段时间了,但没有多大帮助。

【问题讨论】:

  • 您是否尝试过使用常规的net/http stdlib?我会尝试让它工作,然后将其切换到 Rest-Client。
  • 是的,我做到了,不幸的是同样的结果:(
  • 问题解决了吗?

标签: ruby ssl openssl


【解决方案1】:

强烈推荐使用顶级初始化器:

conf/initializer/tls_settings.rb

OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = 'TLSv1_2'

【讨论】:

  • 谢谢!虽然我没有使用 Rails。这仍然相关吗?
  • 是的,这是关于 Ruby stdlib 的设置
猜你喜欢
  • 2011-03-31
  • 1970-01-01
  • 2014-11-06
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
相关资源
最近更新 更多