Sì, ma ci sono alcuni avvertimenti.
Ciò avviene tramite Indicazione nome server, un'estensione di Transport Layer Security.
Che cos'è l'indicazione del nome del server?
L'indicazione del nome del server ( RFC 6066 ; obsoleto RFC 4366 , RFC 3546 ) è un'estensione di Transport Layer Security che consente al client di comunicare al server il nome dell'host che sta tentando di raggiungere.
SNI è compatibile con TLS 1.0 e versioni successive in base alle specifiche, ma le implementazioni possono variare (vedere di seguito). Non può essere utilizzato con SSL, quindi una connessione deve negoziare TLS (vedere l' appendice E RFC 4346 ) per poter utilizzare SNI. Questo generalmente avviene automaticamente con il software supportato.
Perché è necessario SNI?
In una normale connessione HTTP , il browser informa il server del nome host del server che sta tentando di raggiungere utilizzando l' Host:
intestazione. Ciò consente a un server Web su un singolo indirizzo IP di servire contenuto per più nomi host, comunemente noto come hosting virtuale basato su nomi .
L'alternativa è assegnare indirizzi IP univoci per ciascun nome host Web da offrire. Questo è stato comunemente fatto nei primissimi giorni del Web, prima che fosse noto che gli indirizzi IP si sarebbero esauriti e che le misure di conservazione iniziassero, e che è ancora fatto in questo modo per gli host virtuali SSL (non usando SNI).
Poiché questo metodo di trasmissione del nome host richiede che la connessione sia già stabilita, non funziona con le connessioni SSL / TLS. Quando viene stabilita la connessione sicura, il server Web deve già sapere quale nome host servirà al client, poiché il server Web stesso sta configurando la connessione protetta.
SNI risolve questo problema facendo in modo che il client trasmetta il nome host come parte della negoziazione TLS, in modo che il server sia già a conoscenza dell'host virtuale da utilizzare per la connessione. Il server può quindi utilizzare il certificato e la configurazione per l'host virtuale corretto.
Perché non usare indirizzi IP diversi?
L' Host:
intestazione HTTP è stata definita per consentire a più host Web di essere serviti da un singolo indirizzo IP a causa della carenza di indirizzi IPv4, riconosciuto come un problema già dalla metà degli anni '90. In ambienti di hosting Web condivisi, è possibile servire centinaia di siti Web unici e non correlati utilizzando un singolo indirizzo IP in questo modo, conservando lo spazio degli indirizzi.
Gli ambienti di hosting condiviso hanno quindi scoperto che il più grande consumatore di spazio degli indirizzi IP era la necessità che i siti Web sicuri avessero indirizzi IP univoci, creando la necessità di SNI come misura di stop-gap sulla strada verso IPv6. Oggi a volte è difficile ottenere fino a 5 indirizzi IP (/ 29) senza una giustificazione significativa, causando spesso ritardi nella distribuzione.
Con l'avvento di IPv6, tali tecniche di conservazione degli indirizzi non sono più necessarie, poiché a un singolo host possono essere assegnati più indirizzi IPv6 rispetto a quelli dell'intera Internet oggi, ma le tecniche saranno probabilmente ancora utilizzate in futuro per servire l'IPv4 legacy connessioni.
Avvertenze
Alcune combinazioni di sistema operativo / browser non supportano SNI (vedere di seguito), quindi l'utilizzo di SNI non è appropriato per tutte le situazioni. I siti destinati a tali combinazioni di sistema / browser dovrebbero rinunciare a SNI e continuare a utilizzare indirizzi IP univoci per ciascun host virtuale.
Di particolare nota, nessuna versione di Internet Explorer su Windows XP supporta SNI. Poiché questa combinazione rappresenta ancora una porzione significativa (ma in costante calo; circa il 16% del traffico Internet nel dicembre 2012 secondo NetMarketShare) del traffico Internet, SNI sarebbe inappropriato per un sito destinato a queste popolazioni di utenti.
Supporto
Molti pacchetti software di uso comune, ma non tutti, supportano SNI.
(L'omissione da questo elenco non significa necessariamente mancanza di supporto; significa che c'era un limite a quanto potevo digitare o non riuscivo a trovare rapidamente le informazioni in una ricerca. Se il tuo pacchetto software non è elencato, la ricerca per il suo nome plus sni
dovrebbe rivelare se esiste supporto e come impostarlo.)
Supporto per la biblioteca
La maggior parte dei pacchetti dipende da una libreria esterna per fornire supporto SSL / TLS.
- GNU TLS
- JSSE (Oracle Java) 7 o versioni successive, solo come client
- libcurl 7.18.1 o successivo
- NSS 3.1.1 o versioni successive
- OpenSSL 0.9.8j o successivo
- OpenSSL 0.9.8f o superiore, con flag di configurazione
- Qt 4.8 o superiore
Supporto server
La maggior parte delle versioni attuali del popolare software server supporta SNI. Le istruzioni di installazione sono disponibili per la maggior parte di questi:
Assistenza clienti
La maggior parte dei browser Web e degli user agent della riga di comando supportano SNI.
Desktop
- Chrome 5 o versioni successive
- Chrome 6 o versioni successive su Windows XP
- Firefox 2 o versioni successive
- Internet Explorer 7 o versioni successive, in esecuzione su Windows Vista / Server 2008 o versioni successive
- Internet Explorer su Windows XP non supporta SNI indipendentemente dalla versione di IE
- Konqueror 4.7 o versioni successive
- Opera 8 o versione successiva (potrebbe essere necessario abilitare TLS 1.1 per funzionare)
- Safari 3.0 su Windows Vista / Server 2008 o versione successiva o Mac OS X 10.5.6 o versione successiva
Mobile
- Browser Android su Honeycomb 3.0 o versione successiva
- iOS Safari su iOS 4 o versioni successive
- Windows Phone 7 o versioni successive
Riga di comando
- cURL 7.18.1 o successivo
- wget 1.14 o versione successiva (le distribuzioni potrebbero aver eseguito il backport di una patch per il supporto SNI)
Senza supporto
- BlackBerry Browser
- Internet Explorer (qualsiasi versione) su Windows XP
(Nota: alcune informazioni per questa risposta sono state ottenute da Wikipedia .)