Варианты этой ошибки были опубликованы повсюду, но ни одно из решений, похоже, не работает для меня.Ruby: SSL_connect SYSCALL return = 5 errno = 0 state = unknown state (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>'
Переход на сайт из браузера показывает сертификат, как представляется, будет хорошо. Curl также не вызывает ошибок.
Кроме того, когда я пытаюсь использовать Ruby 1.9.3, это работает. Однако я не склонен понижать версию Ruby, если найду решение.
Не могли бы вы рассказать мне, что именно изменилось, что вызывает эту проблему?
UPDATE:
ответ и объяснение ниже Штеффена правильно. Для справки в будущем, вот как диагностировать эту проблему.
- Сначала определите, какие шифры сервер поддерживает. Запустите команду
nmap --script ssl-enum-ciphers ntpnow.com
. Найдите раздел, в котором перечислены поддерживаемые шифры. - Определите ключ шифрования, который вам нужно будет передать как часть
http.ciphers
. Запуститьopenssl ciphers
. Это будет вызывать список шифров:
. Найдите тот результат, который соответствует результату с шага 1.
Отлично! Это сработало. Единственное различие заключается в том, что мне пришлось использовать DES-CBC3-SHA в качестве шифрования. Большое спасибо! – prajo
@prajo: Я изменил ответ, чтобы использовать правильный шифр. –