Błąd konfiguracji serwera stunnel: `SSL3_GET_CLIENT_HELLO: zły numer wersji`

9

Konfiguruję stunnelserwer w systemie Windows XP i pojawia się ten błąd, gdy klient próbuje uzyskać dostęp:

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)

Masz pomysł, co z tym zrobić? Czytałem online, że może to oznaczać, że mój serwer reklamuje się, że może komunikować się w SSL3, ale tak naprawdę nie może. Jeśli to prawda, chciałbym wiedzieć, jak to naprawić. Edytuję stunnel.confplik, ale nie mam pojęcia, co w nim zmienić, aby to naprawić.

AKTUALIZACJA:

Powyższy komunikat o błędzie pojawia się tylko wtedy, gdy klient Twilio (tj. Serwer Twilio) próbuje uzyskać dostęp do mojego serwera. Gdy próbuję uzyskać dostęp do mojego serwera za pomocą jednego z moich komputerów, strona się wyświetla, ale po wyświetleniu zawartości Chrome wyświetla stronę jako „ładującą” przez około 30 sekund, na końcu której pojawia się stunnelten komunikat:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

AKTUALIZACJA:

Oto zrzut wireshark: https://gist.github.com/cool-RR/4963477

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

Zauważ, że serwer działa na porcie 8088.

AKTUALIZACJA:

Oto dziennik z serwera (z debugowaniem = 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)

AKTUALIZACJA:

Oto mój stunnel.confplik.

Ram Rachum
źródło
Brakuje pliku dropbox. Serwer zwraca HTTP / 404
Mircea Vutcovici
@MirceaVutcovici Przepraszamy, naprawiono teraz.
Ram Rachum,
Zwiększyłem nagrodę za pytanie do 100 punktów.
Ram Rachum
1
Czy możesz również dołączyć plik stunnel.conf? Ponieważ wygląda na to, że Twój serwer odmawia połączeń SSLv3.0
Stephane
Obejmuje to teraz
Ram Rachum

Odpowiedzi:

3

Powinieneś zrobić przechwytywanie sieci i zobaczyć, dlaczego zostało odrzucone. Sprawdź także dzienniki w obu punktach końcowych. Zwiększ debugpoziom w konfesjonale stunnela.

Musisz wykonać śledzenie sieci, aby dowiedzieć się, którą wersję protokołu SSL obsługuje klient. Następnie upewnij się, że serwer obsługuje również tę wersję.

Klient wysyła komunikat ClientHello określający najwyższą obsługiwaną wersję protokołu TLS, liczbę losową, listę sugerowanych CipherSuites i sugerowane metody kompresji.

Źródło

Pamiętaj, że protokół SSL został zmieniony kilka lat temu z powodu błędu bezpieczeństwa podczas renegocjacji. Zobacz CVE-2009-3555 i tę stronę na temat renegocjacji protokołu SSL

Serwer odpowiada:

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)

Musisz sprawdzić dzienniki na serwerze SSL, aby zobaczyć, dlaczego odmówił połączenia. Spróbuj włączyć SSL debugowania na stunnel z: debug=7.

stunnelSerwer ma options = NO_SSLv3, ale klient próbuje połączyć się przy użyciu SSLv3. Musisz zaktualizować klienta, aby obsługiwał nowszą wersję protokołu SSL lub musisz zmienić stunnelkonfigurację, aby zaakceptować protokół SSLv3.

Mircea Vutcovici
źródło
Zaktualizowałem pytanie o więcej szczegółów. Czy nadal potrzebujesz mnie do przechwytywania sieci?
Ram Rachum
Tak, aby wiedzieć, która wersja jest obsługiwana przez klienta SSL.
Mircea Vutcovici
Zrobiłem przechwytywanie Wireshark i powiązałem z tym w pytaniu.
Ram Rachum,
1
Ok, problem polega na tym, że masz włączony tryb FIPS (jest on domyślnie włączony w stunnel skompilowanym z FIPS) i że klient próbuje połączyć się za pomocą SSLv3 (zakładam, że musisz potwierdzić z dzienników lub przechwytywania sieci). Ale FIPS działa tylko z TLSv1 lub nowszym.
Mircea Vutcovici
1
Masz 2 rozwiązania: 1. zaktualizuj klienta SSL (Twilio). 2. wyłącz zgodność FIPS i obniż bezpieczeństwo, dodając fips = nodo stunnel.conf
Mircea Vutcovici
0

Może to być niedopasowanie wersji SSL między klientem a serwerem. Upewnij się, że klient jest skonfigurowany tylko dla SSL3, wyłączając starsze wersje SSL na kliencie.

Daniel t.
źródło
Nie mam pojęcia jak to zrobić.
Ram Rachum,