2015-10-22 10 views
5

(OpenSSLの:: SSL :: SSLError)ハロー今助けてください。SSL_connect SYSCALLが返さ= 5のerrno = 0の状態=のSSLv3読んサーバー私はすでにのためにルビーの神々を求めてスタックオーバーフローとイムでこの1に類似の質問の多くに目を通している

イムルビーを経由してHTTPリクエストを行うときに、このスタックトレースを取得:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:918:in `connect': SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A (OpenSSL::SSL::SSLError) 
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:918:in `block in connect' 
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/timeout.rb:66:in `timeout' 
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:918:in `connect' 
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:862:in `do_start' 
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:851:in `start' 
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1367:in `request' 

には、いくつかの注意事項:

私はすでにHTTPオブジェクト上でこれらの属性を設定しようとしている:

http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
http.ssl_version = :TLSv1 
http.ciphers = ['RC4-SHA'] 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

私はすでに

require 'openssl' 
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 
を設定しようとしています

最後に、このエラーは自分のマシンでのみ発生します。私の推測では、私は別のバージョンのopensslを持っている可能性があります。どちらのは、Mac OSXヨセミテです。ここ10.10.5

は、仕事をする機械のための環境である:ここで

*** LOCAL GEMS *** 

activesupport (4.2.4, 3.2.22) 
addressable (2.3.8) 
autoparse (0.3.3) 
bigdecimal (1.2.4) 
bluecloth (2.2.0) 
builder (3.2.2) 
bundler (1.6.2) 
bundler-unload (1.0.2) 
curb (0.8.8) 
executable-hooks (1.3.2) 
extlib (0.9.16) 
faraday (0.9.2) 
gem-wrappers (1.2.4) 
google-api-client (0.8.4) 
google_drive (1.0.1) 
googleauth (0.4.2) 
hurley (0.2) 
i18n (0.7.0) 
io-console (0.4.2) 
jenkins_api_client (1.4.1) 
json (1.8.1) 
jwt (1.5.1) 
launchy (2.4.3) 
little-plugger (1.1.4) 
logging (2.0.0) 
macaddr (1.7.1) 
maruku (0.7.2) 
memoist (0.12.0) 
mime-types (2.3) 
mini_magick (4.2.7) 
mini_portile (0.7.0.rc4) 
minitest (5.8.1, 4.7.5) 
mixlib-shellout (2.2.1) 
multi_json (1.11.2) 
multi_xml (0.5.5) 
multipart-post (2.0.0) 
netrc (0.7.7) 
nokogiri (1.6.7.rc3) 
oauth (0.4.7) 
oauth2 (1.0.0) 
plist (3.1.0) 
polyglot (0.3.5) 
psych (2.0.5) 
rack (1.6.4) 
rake (10.3.2, 10.1.0) 
rdoc (4.1.0) 
representable (2.3.0) 
rest-client (1.7.2) 
retriable (2.1.0, 1.4.1) 
rubygems-bundler (1.4.4) 
rvm (1.11.3.9) 
signet (0.6.1) 
sqlite3 (1.3.9) 
systemu (2.6.4) 
terminal-table (1.5.2) 
test-unit (2.1.2.0) 
thor (0.19.1) 
thread_safe (0.3.5) 
treetop (1.5.3) 
tzinfo (1.2.2) 
uber (0.0.15) 
unicode (0.4.4.1) 
uuid (2.3.7) 

here is my version of openssl: 

OpenSSL 0.9.8zg 14 July 2015 

は仕事をdoesntのマシンの私の環境です:

*** LOCAL GEMS *** 

activesupport (3.2.22) 
addressable (2.3.8) 
autoparse (0.3.3) 
bigdecimal (1.2.0) 
bluecloth (2.2.0) 
builder (3.2.2) 
CFPropertyList (2.2.8) 
curb (0.8.8) 
extlib (0.9.16) 
faraday (0.9.2) 
google-api-client (0.8.4) 
google_drive (1.0.1) 
googleauth (0.4.2) 
i18n (0.7.0) 
io-console (0.4.2) 
jenkins_api_client (1.4.1) 
json (1.8.1, 1.7.7) 
jwt (1.5.1) 
launchy (2.4.3) 
libxml-ruby (2.6.0) 
little-plugger (1.1.4) 
logging (2.0.0) 
macaddr (1.7.1) 
maruku (0.7.2) 
memoist (0.12.0) 
mime-types (2.3) 
mini_portile (0.6.2) 
minitest (5.8.1, 4.3.2) 
mixlib-shellout (2.2.2) 
multi_json (1.11.2) 
multi_xml (0.5.5) 
multipart-post (2.0.0) 
netrc (0.7.7) 
nokogiri (1.6.6.2, 1.5.6) 
oauth (0.4.7) 
oauth2 (1.0.0) 
plist (3.1.0) 
polyglot (0.3.5) 
psych (2.0.0) 
rack (1.6.4) 
rake (10.3.2, 0.9.6) 
rdoc (4.0.0) 
rest-client (1.7.2) 
retriable (1.4.1) 
signet (0.6.1) 
sqlite3 (1.3.9, 1.3.7) 
systemu (2.6.4) 
terminal-table (1.5.2) 
test-unit (2.0.0.0) 
thor (0.19.1) 
thread_safe (0.3.5) 
treetop (1.5.3) 
tzinfo (1.2.2) 
unicode (0.4.4.1) 
uuid (2.3.7) 

here is my version of openssl: (I tried upgrading to latest, that didnt work either) 

OpenSSL 1.0.1g 7 Apr 2014 
+1

を使用して私のために、タイムアウト設定を調整しようとすることができ、 'のOpenSSL :: SSL :: VERIFY_PEER'は一定であるため、に割り当てることはできません。代わりに、 'Net :: HTTP.new'の後ろの行で' http://verify_mode = OpenSSL :: SSL :: VERIFY_NONE'を試してみる価値があります。 –

+0

実際にこれも試しました。私の質問を更新させてください。 – Rafthecalf

答えて

0

は、問題を考え出しました。私は古いバージョンのruby(2.0.0)を2.1.2にアップグレードし、魔法のように動作します。 Ruby 2.0.0が何を持っているか分からないので、opensslはそのエラーをスローします。私の意見では非常に役に立たないエラーメッセージです。

0

OpenSSL 0.9.8zg 2015年7月14日

あなたはOpenSSLのバージョンのバージョンの最近の日付でだまされないでください。 Macには、TLS 1.1とTLS 1.2を実行することができず、新しい暗号をサポートしていないOpenSSLの旧バージョンが付属していますが、この古いバージョンにはセキュリティ修正が適用されています。あなたの質問には、問題を再現するための詳細が不足していると私の推測では、サーバーは単に新しいTLSバージョンや新しい暗号の一部を期待していると思います。

はまた、サーバーでサポートされているSSLプロトコルバージョンと暗号を示しSSLLabsで公共のHTTPSサーバの動作を確認することができます。また、OpenSSLバージョン0.9.8など、さまざまなクライアントで問題が発生するかどうかを示します。

0

これはおそらく、タイムアウトエラーによって引き起こされていませんか?私はこのエラーを見ているので、私のルビースタックのトレースでb/cと思っていたし、timeout.rbファイル、ちょうど推測を通過します。

error=SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read finished A 
/Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/net/http.rb:920:in `connect' 
/Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/net/http.rb:920:in `block in connect' 
/Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/timeout.rb:76:in `timeout' 
/Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/net/http.rb:920:in `connect' 
/Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/net/http.rb:863:in `do_start' 
/Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/net/http.rb:852:in `start' 
/Users/Ben/.rvm/gems/[email protected]/gems/rest-client-1.8.0/lib/restclient/request.rb:413:in `transmit' 
/Users/Ben/.rvm/gems/[email protected]/gems/rest-client-1.8.0/lib/restclient/request.rb:176:in `execute' 
/Users/Ben/.rvm/gems/[email protected]/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in `execute' 
/Users/Ben/.rvm/gems/[email protected]/gems/rest-client-1.8.0/lib/restclient.rb:65:in `get' 

あなたはこの場合RestClient libに

RestClient::Request.execute(method: :get, url: url, 
          timeout: 30, 
          headers: {:accept => :json, 
             :Authorization =>access_token_header()} 
関連する問題