2015-07-11 59 views
2

我一直在努力解決這個問題一段時間了。我正嘗試使用Rest-Client ruby​​ gem來使用SSL證書來訪問API端點。我確信服務器只響應TLSv_1_2和TLSv_1_1,但我似乎無法使其工作。 這是代碼的片段:SYSCALL返回= 5 errno = 0狀態= SSLv3讀取服務器hello A與Ruby RESTful客戶端

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了一段時間,但它並沒有太大的幫助。

+0

您是否嘗試過使用常規的'網/ http' STDLIB?我會盡力讓它工作,然後將其切換到Rest-Client。 – Max

+0

是的,我做了,同樣的結果很遺憾:( – Koopa

+0

你解決了這個問題嗎? – Anatoly

回答

1

的頂層初始化強烈建議使用:

的conf /初始化/ tls_settings.rb

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

謝謝! 雖然我沒有使用Rails,但仍然相關嗎? – Koopa

+0

是的,它是關於Ruby stdlib – Anatoly

相關問題