Cos'è un foro SNI?

38

All'inizio di oggi, Lone Learner ha chiesto Perché non vi sono errori di certificato durante la visita a google.net anche se presenta un certificato pubblicato su google.com?

La risposta accettata spiega che il problema è stato causato da un foro SNI .

You've fallen into a "SNI hole". Google will present a different certificate if there is no "Server Name Indication" given in the client's TLS handshake part.
-StackzOfZtuff

Il risultato della ricerca in alto per "Cos'è un foro SNI" è la pagina delle domande per < a href="https://security.stackexchange.com/q/91717/141087"> Quali sono le implicazioni per la sicurezza di abilitare un foro SNI su un server web? , che non è molto aiuto per chi non ha familiarità con il termine.

Che cos'è esattamente un foro SNI?

    
posta Steven M. Vascellaro 10.07.2017 - 22:59
fonte

3 risposte

37

SNI ( Indicazione del nome del server ) è un'estensione TLS (Transport Layer Security) in cui il client presenta al server il nome di dominio per il target a cui desidera accedere all'interno dell'handshake TLS. Viene utilizzato nei casi in cui esistono più server virtuali con diversi certificati sullo stesso indirizzo IP, in modo che il server possa presentare il certificato corretto.

Pertanto è simile all'intestazione dell'host HTTP nella richiesta HTTP, che è usata per selezionare la configurazione dell'host virtuale corrispondente - solo l'intestazione dell'Host non può essere usata per selezionare il certificato poiché viene inviato all'interno la richiesta HTTP. (vale a dire dopo che l'handshake TLS è già stato eseguito).

Poiché l'estensione SNI TLS è opzionale, alcuni client potrebbero non inviare questa estensione. Questo è il caso con openssl s_client senza l'argomento -servername , ma anche con molte librerie TLS in diversi linguaggi di programmazione. E mentre tutti i browser moderni usano SNI, i browser più vecchi come IE8 su XP non lo usano.

Se un tale client si connette a un server che ha più certificati, il server non sa quale certificato il cliente abbia effettivamente bisogno, cioè il client cade nel "buco SNI" non usando l'estensione SNI. In questo caso il server di solito restituisce un errore (o talvolta semplicemente chiude la connessione) o utilizza un certificato predefinito esplicitamente o configurato implicitamente per questo scopo.

    
risposta data 10.07.2017 - 23:21
fonte
11

Un buco SNI si ha quando si imposta un sito predefinito per un indirizzo IP che non richiede la presenza di SNI per completare una connessione HTTPS.

Questo è, in effetti, il modo in cui le tutte connessioni HTTPS funzionavano prima che esistesse SNI. Ogni sito HTTPS richiedeva un indirizzo IP instradabile, non solo un nome host. Pertanto, quando impostato in questo modo, qualsiasi richiesta di porta 443 a quell'indirizzo IP verrà risolta in quello stesso sito, anche se si dispone di molti siti HTTP (porta 80) che utilizzano nomi host virtuali. Questo era un problema perenne per le persone che hanno riutilizzato i server Web per un certo numero di siti e quindi hanno deciso di configurare SSL / HTTPS per uno. Se stai eseguendo http://example.com e http://contoso.com sullo stesso server, quindi configura HTTPS per example.com, i risultati per http://contoso.com continueranno a funzionare correttamente, ma le richieste di https://contoso.com restituiranno risultati da https://example.com , anche se con un errore di certificato.

Ciò che vedi qui è effettivamente la stessa cosa. Se non si invia l'estensione SNI che comunica ai server di Google quale hostname si sta tentando di connettersi, l'impostazione predefinita per gli indirizzi IP del server Web di Google è il sito google.com , quindi indipendentemente dal nome host a cui si sta tentando di connettersi, sarà google.com che risponderà.

    
risposta data 10.07.2017 - 23:19
fonte
1

Hai contattato un server SNI che ha in realtà più di un dominio SSL con un client non SNI. Il server ha indovinato.

Stessa storia di base quando si contatta un server HTTP / 1.1 con un client HTTP / 1.0. Il server indovina.

    
risposta data 10.07.2017 - 23:04
fonte

Leggi altre domande sui tag