Ruby: SSL_connect SYSTEMAUFRUF zurückgegebenen=5 errno=0 state=unknown-Zustand sind (OpenSSL::SSL::SSLError)
Varianten dieser Fehler gepostet wurden, alle über dem Platz, aber keine der Lösungen scheint zu funktionieren für mich.
Ich bin mit ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
und
OpenSSL 1.0.1k 8 Jan 2015
.
Den folgenden Befehl ausführen:
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)
Dumps dieser 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>'
Navigieren Sie zu der Website von einem browser angezeigt wird, ist das Zertifikat scheint in Ordnung zu sein. Curl auch nicht produzieren keine Fehler.
Zusätzlich, wenn ich versuche mit Ruby 1.9.3, es scheint zu funktionieren. Allerdings bin ich nicht geneigt, ein downgrade Ruby-Versionen, wenn ich eine Lösung finden können.
Können Sie mir bitte sagen, was genau geändert, das dieses problem verursacht?
UPDATE:
Steffen ' s Antwort und Erklärung unten korrekt ist. Für zukünftige Referenz, hier ist, wie um dieses problem zu diagnostizieren.
- Zunächst ermitteln, welche Verschlüsselungen unterstützt der server. Führen Sie den Befehl
nmap --script ssl-enum-ciphers ntpnow.com
. Suchen Sie den Abschnitt listet die unterstützten Chiffren. - Bestimmen Sie die Ziffer-Taste, die Sie zu Durchlaufen haben, als Teil der
http.ciphers
. Führen Sieopenssl ciphers
. Dieser spuckt heraus eine:
getrennte Liste von Chiffren. Finden Sie das passende Ergebnis aus Schritt 1.
InformationsquelleAutor prajo | 2015-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser sieht aus wie genau das gleiche problem hab ich beantwortet https://stackoverflow.com/a/29611892/3081018. Gleiche problem: der server kann nur TLS 1.0 und unterstützt nur DES-CBC3-SHA als Chiffre. Dieses Verfahren ist nicht mehr standardmäßig aktiviert in den letzten ruby-Versionen. Verbinden Sie sich mit dieser Chiffre versuchen, geben Sie die Chiffre explizit im code:
Ich habe mich verändert, die Antwort auf die richtige Chiffre.
InformationsquelleAutor Steffen Ullrich
Benutze ich Mechanisieren, und ich war auf der Suche nach einem patch, anstatt der Konfiguration des http-client-Instanz. Dies ist, wie ich es geschafft, es zu tun:
InformationsquelleAutor barbolo