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.

  1. 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.
  2. Déterminer la clé de chiffrement que vous aurez à passer dans le cadre de http.ciphers. Exécuter openssl 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