È possibile utilizzare SNI (indicazione del nome del server) nell'handshake SSLv3 o SSLv2? Dalle query di ricerca, sembra che SNI sia l'estensione TLS. C'è qualche alternativa a SNI?
È possibile utilizzare SNI (indicazione del nome del server) nell'handshake SSLv3 o SSLv2? Dalle query di ricerca, sembra che SNI sia l'estensione TLS. C'è qualche alternativa a SNI?
La specifica SSL-3.0 contiene il seguente estratto, nella descrizione di ClientHello
messaggio:
Forward compatibility note: In the interests of forward
compatibility, it is permitted for a client hello message to include
extra data after the compression methods. This data must be included
in the handshake hashes, but must otherwise be ignored.
Ciò significa che mentre le estensioni TLS sono state solo definite, formalmente, per TLS-1.0 e versioni successive, possono essere incluse in una ClientHello
per SSL-3.0 e nulla impedisce a qualsiasi client o server per utilizzare effettivamente tali estensioni come parte di un handshake SSL-3.0. OpenSSL, tuttavia, sembra non voler fare proprio così. In particolare, lo strumento della riga di comando, se utilizzato come client ( openssl s_client
), non invia un'estensione SNI (o alcuna estensione) quando viene richiesto di utilizzare solo SSL-3.0.
Non c'è spazio per le estensioni in un messaggio diClientHello
SSL-2.0%. Una conseguenza è che se un cliente desidera supportare un server solo SSL-2.0, allora deve inviare il suo ClientHello
nel formato SSL-2.0, e questo impedisce l'uso di qualsiasi estensione.
Si noti che il supporto SNI coinvolge sia client che server (il client deve inviare l'estensione, il server deve capirlo). I vecchi client potrebbero non conoscere SNI (un esempio notevole è Internet Explorer quando si esegue su Windows XP). Un client che richiede l'uso di SSL-2.0 o SSL-3.0, ma non supporta TLS-1.0, deve essere piuttosto vecchio (oltre 15 anni) ed è improbabile che sia a conoscenza dell'esistenza di SNI. TLS-1.0 è stato pubblicato in gennaio 1999 mentre SNI è stato pubblicato per la prima volta in June 2003 .
In ogni caso, non utilizzare SSL-2.0 o SSL-3.0, entrambi con problemi di sicurezza irrimediabili. Esiste persino uno standard che vieta l'uso di SSL-2.0. Si può sostenere che un browser Web che non conosce SNI o TLS-1.0 è un browser che non è stato aggiornato per molti anni, e quindi deve includere un numero enorme di vulnerabilità note ed è probabilmente ospita già una manciata di malware e parte di una o più botnet. In questa vista, l'unico comportamento corretto di un server Web che riceve una richiesta di connessione limitata a SSL-3.0 (o inferiore) è di rifiutarlo incondizionatamente. Potrebbe essere contagioso.