Error al configurar el servidor stunnel: `SSL3_GET_CLIENT_HELLO: número de versión incorrecto`

9

Estoy configurando un stunnelservidor en Windows XP, y aparece este error cuando un cliente intenta acceder:

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)

¿Alguna idea de qué hacer al respecto? Leí en línea que esto podría significar que mi servidor está anunciando que puede comunicarse en SSL3, pero de hecho no puede. Si esto es cierto, me gustaría saber cómo puedo solucionarlo. Estoy editando el stunnel.confarchivo, pero no tengo idea de qué cambiar para solucionarlo.

ACTUALIZAR:

El mensaje de error anterior se muestra solo cuando el cliente Twilio (es decir, el servidor Twilio) intenta acceder a mi servidor. Cuando intento acceder a mi servidor con una de mis computadoras, la página aparece, pero después de que se muestra el contenido, Chrome muestra la página como "cargando" durante unos 30 segundos, al final de los cuales aparece stunneleste mensaje:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

ACTUALIZAR:

Aquí está la captura de Wirehark: https://gist.github.com/cool-RR/4963477

Archivo de tapa: https://dl.dropbox.com/u/1927707/wireshark.cap

Tenga en cuenta que el servidor se ejecuta en el puerto 8088.

ACTUALIZAR:

Aquí está el registro del servidor (con depuración = 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)

ACTUALIZAR:

Aquí está mi stunnel.confarchivo.

Ram Rachum
fuente
Parece que falta el archivo de Dropbox. El servidor regresa HTTP / 404
Mircea Vutcovici
@MirceaVutcovici Lo siento, arreglado ahora.
Ram Rachum
Aumenté la recompensa por la pregunta a 100 puntos.
Ram Rachum
1
¿Podría incluir también el archivo stunnel.conf? Porque parece que su servidor rechaza las conexiones SSLv3.0
Stephane
Incluido ahora
Ram Rachum

Respuestas:

3

Debe realizar una captura de red y ver por qué fue rechazada. También verifique los registros en ambos puntos finales. Aumenta el debugnivel en la conf. De aturdimiento.

Debe realizar un seguimiento de la red para determinar qué versión del protocolo SSL admite el cliente. Luego, asegúrese de que su servidor también sea compatible con esa versión.

Un cliente envía un mensaje ClientHello que especifica la versión de protocolo TLS más alta que admite, un número aleatorio, una lista de CipherSuites sugeridos y métodos de compresión sugeridos.

Fuente

Tenga en cuenta que el protocolo SSL se modificó hace unos años debido a un error de seguridad en la renegociación. Consulte CVE-2009-3555 y esta página sobre Renegociación SSL

El servidor responde 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)

Debe verificar los registros en el servidor SSL para ver por qué ha rechazado la conexión. Tratar de activar SSL en la depuración de stunnel con: debug=7.

El stunnelservidor sí options = NO_SSLv3, pero el cliente intenta conectarse mediante SSLv3. Debe actualizar el cliente para admitir una versión más nueva de SSL o debe cambiar la stunnelconfiguración para aceptar SSLv3.

Mircea Vutcovici
fuente
He actualizado la pregunta con más detalles. ¿Todavía me necesitas para hacer una captura de red?
Ram Rachum
Sí, para saber qué versión es compatible con el cliente SSL.
Mircea Vutcovici
Hice una captura de Wireshark y la vinculé en la pregunta.
Ram Rachum
1
Ok, el problema es que tiene habilitado el modo FIPS (está habilitado de manera predeterminada en stunnel compilado con FIPS) y que el cliente está tratando de conectarse usando SSLv3 (supongo, debe confirmar desde los registros o la captura de red). Pero FIPS solo funciona con TLSv1 o más reciente.
Mircea Vutcovici
1
Tiene 2 soluciones: 1. actualice el cliente SSL (Twilio). 2. deshabilite el cumplimiento de FIPS y fips = noreduzca la seguridad, agregando a stunnel.conf
Mircea Vutcovici
0

Podría ser una falta de coincidencia de versión SSL entre el cliente y el servidor. Asegúrese de que el cliente esté configurado solo para SSL3, deshabilitando las versiones anteriores de SSL en el cliente.

Daniel t.
fuente
No tengo idea de cómo hacer eso.
Ram Rachum