Fehler beim Einrichten des Stunnel-Servers: `SSL3_GET_CLIENT_HELLO: falsche Versionsnummer`

9

Ich richte einen stunnelServer unter Windows XP ein und erhalte diesen Fehler, wenn ein Client versucht, darauf zuzugreifen:

2013.02.14 00:02:16 LOG7[8848:7664]: Service [https] accepted (FD=320) from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:7664]: Creating a new thread
2013.02.14 00:02:16 LOG7[8848:7664]: New thread created
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] started
2013.02.14 00:02:16 LOG5[8848:9792]: Service [https] accepted connection from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:9792]: SSL state (accept): before/accept initialization
2013.02.14 00:02:16 LOG7[8848:9792]: SSL alert (write): fatal: handshake failure
2013.02.14 00:02:16 LOG3[8848:9792]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.14 00:02:16 LOG5[8848:9792]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.14 00:02:16 LOG7[8848:9792]: Local socket (FD=320) closed
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] finished (0 left)

Irgendeine Idee, was man dagegen tun soll? Ich habe online gelesen, dass dies bedeuten könnte, dass mein Server Werbung dafür macht, dass er in SSL3 kommunizieren kann, aber tatsächlich nicht. Wenn dies zutrifft, würde ich gerne wissen, wie ich das beheben kann. Ich bearbeite die stunnel.confDatei, habe aber keine Ahnung, was ich daran ändern soll, um dies zu beheben.

AKTUALISIEREN:

Die obige Fehlermeldung wird nur angezeigt, wenn der Twilio-Client (dh der Twilio-Server) versucht, auf meinen Server zuzugreifen. Wenn ich versuche, mit einem meiner Computer auf meinen Server zuzugreifen, wird die Seite angezeigt. Nach dem Anzeigen des Inhalts zeigt Chrome die Seite etwa 30 Sekunden lang als "Laden" an. Am Ende stunnelwird folgende Meldung angezeigt:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

AKTUALISIEREN:

Hier ist die Wireshark-Erfassung: https://gist.github.com/cool-RR/4963477

Cap-Datei: https://dl.dropbox.com/u/1927707/wireshark.cap

Beachten Sie, dass der Server auf Port 8088 ausgeführt wird.

AKTUALISIEREN:

Hier ist das Protokoll vom Server (mit Debug = 7):

2013.02.17 17:06:52 LOG7[7636:2092]: No limit detected for the number of clients
2013.02.17 17:06:52 LOG5[7636:2092]: stunnel 4.54 on x86-pc-msvc-1500 platform
2013.02.17 17:06:52 LOG5[7636:2092]: Compiled/running with OpenSSL 1.0.1c-fips 10 May 2012
2013.02.17 17:06:52 LOG5[7636:2092]: Threading:WIN32 SSL:+ENGINE+OCSP+FIPS Auth:none Sockets:SELECT+IPv6
2013.02.17 17:06:52 LOG5[7636:2092]: Reading configuration from file stunnel.conf
2013.02.17 17:06:52 LOG5[7636:2092]: FIPS mode is enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Compression not enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Snagged 64 random bytes from C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: Wrote 1024 new random bytes to C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: PRNG seeded successfully
2013.02.17 17:06:52 LOG6[7636:2092]: Initializing service [https]
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Key file: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Private key loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Could not load DH parameters from G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Using hardcoded DH parameters
2013.02.17 17:06:52 LOG7[7636:2092]: DH initialized with 2048-bit key
2013.02.17 17:06:52 LOG7[7636:2092]: ECDH initialized with curve prime256v1
2013.02.17 17:06:52 LOG7[7636:2092]: SSL options set: 0x03000004
2013.02.17 17:06:52 LOG5[7636:2092]: Configuration successful
2013.02.17 17:06:52 LOG7[7636:2092]: Service [https] (FD=268) bound to 0.0.0.0:8088
2013.02.17 17:07:08 LOG7[7636:2092]: Service [https] accepted (FD=320) from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:2092]: Creating a new thread
2013.02.17 17:07:08 LOG7[7636:2092]: New thread created
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] started
2013.02.17 17:07:08 LOG5[7636:8004]: Service [https] accepted connection from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:8004]: SSL state (accept): before/accept initialization
2013.02.17 17:07:08 LOG7[7636:8004]: SSL alert (write): fatal: handshake failure
2013.02.17 17:07:08 LOG3[7636:8004]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.17 17:07:08 LOG5[7636:8004]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.17 17:07:08 LOG7[7636:8004]: Local socket (FD=320) closed
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] finished (0 left)

AKTUALISIEREN:

Hier ist meine stunnel.confAkte.

Ram Rachum
quelle
Die Dropbox-Datei scheint zu fehlen. Der Server gibt HTTP / 404
Mircea Vutcovici
@MirceaVutcovici Sorry, jetzt behoben.
Ram Rachum
Ich habe das Kopfgeld für die Frage auf 100 Punkte erhöht.
Ram Rachum
1
Könnten Sie bitte auch die Datei stunnel.conf hinzufügen? Weil es so aussieht, als würde Ihr Server SSLv3.0-Verbindungen ablehnen
Stephane
Jetzt enthalten
Ram Rachum

Antworten:

3

Sie sollten eine Netzwerkerfassung durchführen und sehen, warum sie abgelehnt wurde. Überprüfen Sie auch die Protokolle an beiden Endpunkten. debugErhöhen Sie den Füllstand im Stunnel conf.

Sie müssen eine Netzwerkablaufverfolgung durchführen, um herauszufinden, welche Version des SSL-Protokolls der Client unterstützt. Stellen Sie dann sicher, dass Ihr Server auch diese Version unterstützt.

Ein Client sendet eine ClientHello-Nachricht mit der Angabe der höchsten unterstützten TLS-Protokollversion, einer Zufallszahl, einer Liste der vorgeschlagenen CipherSuites und der vorgeschlagenen Komprimierungsmethoden.

Quelle

Bitte beachten Sie, dass das SSL-Protokoll vor einigen Jahren aufgrund eines Sicherheitsfehlers bei der Neuverhandlung geändert wurde. Siehe CVE-2009-3555 und diese Seite zur SSL-Neuverhandlung

Der Server antwortet mit:

Secure Sockets Layer
    SSLv3 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
        Content Type: Alert (21)
        Version: SSL 3.0 (0x0300)
        Length: 2
        Alert Message
            Level: Fatal (2)
            Description: Handshake Failure (40)

Sie müssen die Protokolle auf dem SSL-Server überprüfen, um festzustellen, warum die Verbindung abgelehnt wurde. Versuchen Sie, das SSL-Debugging auf dem Stunnel zu aktivieren mit : debug=7.

Der stunnelServer hat options = NO_SSLv3, aber der Client versucht, eine Verbindung mit SSLv3 herzustellen. Sie müssen den Client aktualisieren, um eine neuere Version von SSL zu unterstützen, oder Sie müssen die stunnelKonfiguration ändern , um SSLv3 zu akzeptieren.

Mircea Vutcovici
quelle
Ich habe die Frage mit weiteren Details aktualisiert. Muss ich noch eine Netzwerkerfassung durchführen?
Ram Rachum
Ja, um zu wissen, welche Version vom SSL-Client unterstützt wird.
Mircea Vutcovici
Ich habe ein Wireshark-Capture durchgeführt und es in der Frage verlinkt.
Ram Rachum
1
Ok, das Problem ist, dass Sie den FIPS-Modus aktiviert haben (er ist standardmäßig in mit FIPS kompiliertem Stunnel aktiviert) und dass der Client versucht, eine Verbindung über SSLv3 herzustellen (ich nehme an, Sie müssen dies anhand von Protokollen oder der Netzwerkerfassung bestätigen). FIPS funktioniert jedoch nur mit TLSv1 oder neuer.
Mircea Vutcovici
1
Sie haben zwei Lösungen: 1. Aktualisieren Sie den SSL-Client (Twilio). 2. Deaktivieren Sie die FIPS-Konformität und fips = noverringern Sie die Sicherheit, indem Sie stunnel.conf
Mircea Vutcovici
0

Dies kann eine Nichtübereinstimmung der SSL-Version zwischen dem Client und dem Server sein. Stellen Sie sicher, dass der Client nur für SSL3 konfiguriert ist, indem Sie ältere SSL-Versionen auf dem Client deaktivieren.

Daniel t.
quelle
Ich habe keine Ahnung, wie das geht.
Ram Rachum