Perché StartTLS blocca la connessione ad apache

3

Quando eseguo questo comando:

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

Perché Apache 2.4 & OpenSSL 1.0.1h (in esecuzione sul server 2008R2) non risponde più alla richiesta di altre macchine?

Quello che vedo quando eseguo il comando dai client termina:

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

Mentre OpenSSL è "CONNECTED", vengono interrotte altre connessioni da altre workstation.

Qualsiasi guida sarebbe apprezzata

@ Tom Porro, sì, sono d'accordo. Quindi quando eseguo il comando openssl si trova su "CONNECTED", se ctrl + c ottengo il resto dell'output da 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
---
    
posta KingBain 22.07.2015 - 20:11
fonte

2 risposte

3

Quando faccio openssl s_client -connect myservername:443 -starttls smtp , altri client sono ancora supportati bene.

Certamente, la connessione da OpenSSL fallisce:

$ 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

perché -starttls smtp indica openssl per utilizzare il comando STARTTLS come per il protocollo SMTP e il mio server è un server Web che comunica HTTP (e HTTPS), non SMTP e non ha idea di cosa possa significare "STARTTLS".

Se ci si connette da un client e si esegue questo (in modo improprio, non supportato) STARTTLS in realtà blocca l'intero server, quindi si ha un grosso problema (vale a dire, un denial-of-service davvero facile) che merita un'indagine approfondita, specialmente da quando la mia conoscenza e come per i miei test, Apache + OpenSSL non soffre in genere di quel tipo di bug. Infatti, dato che Apache forca diversi sottoprocessi per gestire i client, e ogni processo gestisce diversi (molti) client in parallelo, sarebbe sorprendente che un bug nella gestione di dati errati da un client bloccherebbe veramente tutti client.

    
risposta data 22.07.2015 - 20:34
fonte
0

L'aggiunta di queste due linee al mio httpd.conf sembra aver risolto il problema:

AcceptFilter https none 
AcceptFilter http none 

Il problema non era specifico di openssl, ma richiedeva che il client tenesse aperta la connessione. Potrei creare lo stesso situtation usando telnet.

c:\telnet myserver 80

Bloccherebbe anche le connessioni per altri utenti

    
risposta data 30.07.2015 - 19:48
fonte

Leggi altre domande sui tag