Disabilitare SSLv3 ma supportando ancora SSLv2Hello in Apache


12

Molti client SSL, in particolare JDK 6, utilizzano il protocollo SSLv2Hello per l'handshake con il server. L'uso di questo protocollo non significa che stai usando SSL 2.0 o 3.0 per quella materia; è semplicemente una stretta di mano per determinare quale protocollo utilizzare. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Tuttavia, in Apache, se disabiliti il ​​supporto SSLv3, ciò apparentemente rimuove il supporto per il protocollo SSLv2Hello. Apache Tomcat ha il supporto esplicito per SSLv2Hello; cioè, puoi abilitarlo, ma non abilitare SSLv3.

C'è un modo per farlo in Apache?

[Aggiornare]

Questa è la mia configurazione del protocollo:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3

However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. Sto eseguendo Apache 2.2 con SSLProtocol all -SSLv2 -SSLv3e l'handshake SSL 2 funziona. Quale configurazione stai eseguendo esattamente che stai riscontrando un problema. L'unico modo che conosco per disabilitare l'handshake SSL 2 è abilitare la modalità FIPS.
Chris S,

1
Che dolore gestire quel supporto legacy nel 2014 :(. È tempo per tutti di eseguire l'annotazione di SSLv2 e SSLv3 e fare il supporto delle estensioni universali (es. SNI).
Xavier Lucas,

2
@XavierLucas Invece di fare tutto -SSLv2, -SSLv3, specifico i protocolli TLS che supporto. Non vedo perché sarebbe diverso, ma proverò.
Matt Hughes,

@ChrisS Ho provato entrambi: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 e tutti -SSLv3 -SSLv2. Questo è in esecuzione con Apache 2.4.10. Nessuna configurazione sembra consentire l'handshake SSL 2. E non ho toccato la modalità FIPS; il valore predefinito è che è disabilitato.
Matt Hughes,

Risposte:


7

Apparentemente mod_ssl è cambiato nell'ultimo anno o giù di lì (non ho trovato il commit esatto per la fonte, ma ho trovato il "problema"). La fonte ora fa questo:

If SSLProtocol only includes only one Protocol:
    Handshake = That Protocol's Handshake Only
Else
    Handshake = SSLv2 Handshake

Non è possibile ignorare questa impostazione. L'unica cosa che potresti fare è modificare la fonte, ricompilare la tua versione. Ho creato un diff per forzare la compatibilità della stretta di mano SSLv2 se vuoi compilare il tuo.


1
Posso confermare che la patch di Chris aiuta: curl (e programmi che usano libcurl come git) ora possono parlare di nuovo con il nostro server, nonostante SSLv3 sia stato disabilitato - senza sslscansegnalare alcuna vulnerabilità. Ma la patch sembra in qualche modo invasiva e vorrei chiedere a Chris di sottoporla al progetto Apache per la revisione al più presto. Presenterò un biglietto da solo, se Chris non lo fa :-) Grazie mille, Chris!
Mikhail T.,

1
Sarebbe una buona idea aggiungere una direttiva separata per forzare la modalità di compatibilità. Se avrò del tempo libero lo scriverò, ma non credo che questa "patch" sia una buona idea a lungo termine.
Chris S,

Sì, sembra essere quello che gli sviluppatori Apache stanno prendendo in considerazione. Vedi il [thread] [1] Ho iniziato lì ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/…
Mikhail T.

1

Quindi si è scoperto che non si è trattato di un problema. Apache accetterà l'handshake SSLv2 con una delle configurazioni che ho pubblicato sopra. Sono stato fuorviato da un errore di stretta di mano nel pensare che questo fosse il problema; era davvero solo un problema di configurazione in cui il server non si fidava della CA del client.

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.