Errore nella configurazione del server stunnel: `SSL3_GET_CLIENT_HELLO: numero di versione errato`


9

Sto configurando un stunnelserver su Windows XP e ricevo questo errore quando un client tenta di accedere a:

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)

Qualche idea su cosa fare al riguardo? Ho letto online che questo potrebbe significare che il mio server sta pubblicizzando che può comunicare in SSL3 ma in realtà non può. Se questo è vero, vorrei sapere come posso risolvere questo problema. Sto modificando il stunnel.conffile ma non ho idea di cosa cambiarlo per risolvere il problema.

AGGIORNARE:

Il messaggio di errore sopra riportato mostra solo quando il client Twilio (ovvero il server di Twilio) tenta di accedere al mio server. Quando provo ad accedere al mio server con uno dei miei computer, la pagina viene visualizzata, ma dopo che il contenuto viene visualizzato, Chrome mostra la pagina come "caricamento" per circa 30 secondi, alla fine del quale stunnelviene visualizzato questo messaggio:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

AGGIORNARE:

Ecco la cattura di WireShark: https://gist.github.com/cool-RR/4963477

File cap: https://dl.dropbox.com/u/1927707/wireshark.cap

Si noti che il server funziona sulla porta 8088.

AGGIORNARE:

Ecco il registro dal server (con 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)

AGGIORNARE:

Ecco il mio stunnel.conffile.


Il file dropbox sembra mancare. Il server restituisce HTTP / 404
Mircea Vutcovici,

@MirceaVutcovici Siamo spiacenti, risolto ora.
Ram Rachum,

Ho aumentato la taglia sulla domanda a 100 punti.
Ram Rachum,

1
Potresti includere anche il file stunnel.conf? Perché sembra che il tuo server stia rifiutando le connessioni SSLv3.0
Stephane,

Incluso ora
Ram Rachum

Risposte:


3

Dovresti effettuare un'acquisizione di rete e vedere perché è stata rifiutata. Controllare anche i registri su entrambi gli endpoint. Aumenta il debuglivello nello stunnel conf.

È necessario creare una traccia di rete per capire quale versione del protocollo SSL supporta il client. Quindi assicurati che il tuo server supporti anche quella versione.

Un client invia un messaggio ClientHello specificando la versione del protocollo TLS più alta che supporta, un numero casuale, un elenco di CipherSuites suggeriti e metodi di compressione suggeriti.

fonte

Si noti che il protocollo SSL è stato modificato alcuni anni fa a causa di un bug di sicurezza nella rinegoziazione. Vedi CVE-2009-3555 e questa pagina sulla rinegoziazione SSL

Il server risponde con:

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)

Devi controllare i log sul server SSL per capire perché ha rifiutato la connessione. Cercate di abilitare SSL debug on stunnel con: debug=7.

Il stunnelserver ha options = NO_SSLv3, ma il client sta tentando di connettersi utilizzando SSLv3. È necessario aggiornare il client per supportare una versione più recente di SSL oppure è necessario modificare la stunnelconfigurazione per accettare SSLv3.


Ho aggiornato la domanda con maggiori dettagli. Hai ancora bisogno che io faccia un'acquisizione di rete?
Ram Rachum,

Sì, per sapere quale versione è supportata dal client SSL.
Mircea Vutcovici,

Ho fatto una cattura di Wireshark e mi sono collegato alla domanda.
Ram Rachum,

1
Ok, il problema è che hai abilitato la modalità FIPS (è abilitata di default nello stunnel compilato con FIPS) e che il client sta provando a connettersi usando SSLv3 (presumo, devi confermare dai log o dall'acquisizione di rete). Ma FIPS funziona solo con TLSv1 o più recente.
Mircea Vutcovici,

1
Hai 2 soluzioni: 1. aggiorna il client SSL (Twilio). 2. disabilitare la conformità FIPS e ridurre la sicurezza aggiungendo fips = noa stunnel.conf
Mircea Vutcovici,

0

Potrebbe trattarsi di una mancata corrispondenza della versione SSL tra client e server. Assicurarsi che il client sia configurato solo per SSL3, disabilitando le versioni SSL precedenti sul client.


Non ho idea di come farlo.
Ram Rachum,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.