Ruby: SSL_connect SYSCALL retornado = 5 erro = 0 estado = estado desconhecido (OpenSSL :: SSL :: SSLError)
Variantes deste erro foram postadas em todo o lugar, mas nenhuma das soluções parece funcionar para mim.
Estou correndoruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
eOpenSSL 1.0.1k 8 Jan 2015
.
Executando o seguinte:
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)
Despeja esse rastreamento:
/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>'
Navegar para o site a partir de um navegador mostra que o certificado parece estar correto. O enrolamento também não produz nenhum erro.
Além disso, quando tento com o Ruby 1.9.3, parece funcionar. No entanto, não estou inclinado a fazer o downgrade das versões do Ruby se encontrar uma solução.
Você pode me dizer o que exatamente mudou que está causando esse problema?
ATUALIZAR:
A resposta e explicação de Steffen abaixo estão corretas. Para referência futura, veja como diagnosticar esse problema.
Primeiro, determine quais cifras o servidor suporta. Execute o comandonmap --script ssl-enum-ciphers ntpnow.com
. Encontre a seção que lista as cifras suportadas.Determine a chave de cifra que você precisará passar como parte dehttp.ciphers
. Correopenssl ciphers
. Isso cuspirá uma:
lista delimitada de cifras. Encontre o que corresponde ao resultado da etapa 1.