此錯誤的變體已發佈到整個地方,但沒有一個解決方案似乎適用於我。Ruby:SSL_connect SYSCALL返回= 5 errno = 0狀態=未知狀態(OpenSSL :: SSL :: SSLError)
我正在運行ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
和 OpenSSL 1.0.1k 8 Jan 2015
。
運行以下:
require 'net/http'
require 'openssl'
url = 'https://ntpnow.com/'
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.ssl_version = :TLSv1
http.get(uri.path)
甩掉這個跟蹤:
/usr/local/lib/ruby/2.2.0/net/http.rb:923:in `connect': SSL_connect SYSCALL returned=5 errno=0 state=unknown state (OpenSSL::SSL::SSLError)
from /usr/local/lib/ruby/2.2.0/net/http.rb:923:in `block in connect'
from /usr/local/lib/ruby/2.2.0/timeout.rb:74:in `timeout'
from /usr/local/lib/ruby/2.2.0/net/http.rb:923:in `connect'
from /usr/local/lib/ruby/2.2.0/net/http.rb:863:in `do_start'
from /usr/local/lib/ruby/2.2.0/net/http.rb:852:in `start'
from /usr/local/lib/ruby/2.2.0/net/http.rb:1375:in `request'
from /usr/local/lib/ruby/2.2.0/net/http.rb:1133:in `get'
from bin/ntpnow_test.rb:9:in `<main>'
導航從瀏覽器的網站顯示的證書似乎是罰款。捲曲也不會產生任何錯誤。
此外,當我嘗試使用Ruby 1.9.3時,它似乎工作。不過,如果我能找到解決方案,我並不傾向於降級Ruby版本。
你能告訴我究竟是什麼導致了這個問題?
更新:
Steffen在下面的回答和解釋是正確的。爲了將來的參考,這裏是如何診斷這個問題。
- 首先確定服務器支持哪些密碼。運行命令
nmap --script ssl-enum-ciphers ntpnow.com
。找到列出支持的密碼的部分。 - 確定作爲
http.ciphers
的一部分您必須通過的密碼密鑰。運行openssl ciphers
。這將吐出一個:
分隔的密碼列表。找到與步驟1的結果相匹配的結果。
非常好!這工作。唯一的區別是我必須使用DES-CBC3-SHA作爲密碼。非常感謝你! – prajo
@prajo:我改變了使用正確密碼的答案。 –