¿Por qué StartTLS bloquea la conexión a Apache?

3

Cuando ejecuto este comando:

openssl s_client -connect my.server:443 -starttls smtp

¿Por qué Apache 2.4 & OpenSSL 1.0.1h (ejecutándose en el servidor 2008R2) ¿deja de responder a la solicitud de otras máquinas?

Lo que veo cuando ejecuto el comando desde el final de los clientes:

openssl s_client -connect my.server:443 -starttls smtp
Loading 'screen' into random state - done
CONNECTED(000001AC)

Mientras OpenSSL está "CONECTADO", otras conexiones de otras estaciones de trabajo expiran.

Cualquier orientación sería apreciada

@ Tom Leek, sí, estoy de acuerdo. Entonces, cuando ejecuto el comando openssl, se encuentra en "CONECTADO", si ctrl + c obtengo el resto de la salida de openssl

openssl s_client -connect my.server:443 -starttls smtp
Loading 'screen' into random state - done
CONNECTED(000001AC)
didn't found starttls in server response, try anyway...
bad select 10093
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
---
    
pregunta KingBain 22.07.2015 - 20:11
fuente

2 respuestas

3

Cuando hago openssl s_client -connect myservername:443 -starttls smtp , otros clientes aún son compatibles.

Por supuesto, la conexión de OpenSSL falla:

$ openssl s_client -connect myservername:443 -starttls smtp
CONNECTED(00000003)
didn't found starttls in server response, try anyway...
140029862278800:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 330 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
zsh: exit 1

porque -starttls smtp le indica a openssl que use el comando STARTTLS según el protocolo SMTP, y mi servidor es un servidor Web , que habla HTTP (y HTTPS), no SMTP, y no tiene idea de lo que puede significar "STARTTLS".

Si se conecta desde un cliente y hace STARTTLS (incorrecto, no compatible) en realidad congela todo su servidor, entonces tiene un gran problema (a saber, una denegación de servicio realmente fácil) que merece una investigación exhaustiva, especialmente porque mi conocimiento y según mis propias pruebas, Apache + OpenSSL en general no sufre ese tipo de error. De hecho, dado que Apache forja varios subprocesos para manejar clientes, y cada proceso maneja varios (muchos) clientes en paralelo, sería sorprendente que un error al manejar datos incorrectos de un cliente realmente bloquee todos clientes.

    
respondido por el Tom Leek 22.07.2015 - 20:34
fuente
0

Añadir estas dos líneas a mi httpd.conf parece haber resuelto el problema:

AcceptFilter https none 
AcceptFilter http none 

El problema terminó no siendo específico de openssl pero sí requirió que el cliente mantuviera la conexión abierta. Podría crear la misma situación usando telnet.

c:\telnet myserver 80

También bloquearía las conexiones para otros usuarios

    
respondido por el KingBain 30.07.2015 - 19:48
fuente

Lea otras preguntas en las etiquetas