Ruby: SSL_connect SYSCALL retourné=5 errno=0=état inconnu (OpenSSL::SSL::SSLError)
Variantes de cette erreur ont été posté, mais aucune des solutions ne semble fonctionner pour moi.
Je suis en cours d'exécution ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
et
OpenSSL 1.0.1k 8 Jan 2015
.
Exécutant la commande suivante:
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)
Décharges cette trace:
/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>'
De navigation vers le site à partir d'un navigateur affiche le certificat semble bien se passer. Curl ne produit pas toutes les erreurs.
De plus, lorsque j'essaie avec Ruby 1.9.3 il semble fonctionner. Cependant, je ne suis pas enclin à faire un downgrade Ruby versions si je peux trouver une solution.
Pouvez-vous me dire en quoi exactement changé qui est à l'origine de ce problème?
Mise à JOUR:
Steffen réponse et l'explication ci-dessous est correct. Pour référence, voici la façon de diagnostiquer ce problème.
- D'abord déterminer qui chiffre le serveur prend en charge. Exécutez la commande
nmap --script ssl-enum-ciphers ntpnow.com
. Trouver la section qui répertorie les prises en charge des algorithmes de chiffrements. - Déterminer la clé de chiffrement que vous aurez à passer dans le cadre de
http.ciphers
. Exécuteropenssl ciphers
. Cela générera un:
liste délimitée par des algorithmes. Trouvez celui qui correspond au résultat de l'étape 1.
OriginalL'auteur prajo | 2015-11-06
Vous devez vous connecter pour publier un commentaire.
Cela ressemble exactement le même problème, j'ai répondu dans https://stackoverflow.com/a/29611892/3081018. Même problème: le serveur ne peut le faire TLS 1.0 et prend en charge uniquement DES-CBC3-SHA comme algorithme de chiffrement. Ce chiffrement n'est plus activé par défaut dans les dernières versions rubis. De se connecter avec ce chiffrement essayez de spécifier l'algorithme de chiffrement de manière explicite dans votre code:
J'ai changé la réponse à utiliser le bon chiffre.
OriginalL'auteur Steffen Ullrich
- Je utiliser Mécaniser, et j'étais à la recherche d'un patch au lieu d'une configuration de client http instance. C'est comment j'ai réussi à le faire:
OriginalL'auteur barbolo