Oui, mais il y a des mises en garde.
Ceci est accompli par l’intermédiaire de l’indication du nom du serveur, une extension de Transport Layer Security.
Qu'est-ce que l'indication du nom du serveur?
Indication du nom du serveur ( RFC 6066 ; RFC 4366 , RFC 3546 obsolète ) est une extension de Transport Layer Security qui permet au client d'indiquer au serveur le nom de l'hôte qu'il tente d'atteindre.
SNI est compatible avec TLS 1.0 et supérieur selon les spécifications, mais les implémentations peuvent varier (voir ci-dessous). Il ne peut pas être utilisé avec SSL. Par conséquent, une connexion doit négocier le protocole TLS (voir l’ annexe E du RFC 4346 ) pour que le SNI soit utilisé. Cela se produit généralement automatiquement avec les logiciels pris en charge.
Pourquoi le SNI est-il nécessaire?
Dans une connexion HTTP normale , le navigateur informe le serveur du nom d'hôte du serveur auquel il tente de parvenir à l'aide de l'en- Host:
tête. Cela permet à un serveur Web sur une seule adresse IP de servir du contenu pour plusieurs noms d'hôte, généralement appelé hébergement virtuel basé sur un nom .
L'alternative consiste à attribuer des adresses IP uniques à chaque nom d'hôte Web à desservir. Cela se faisait généralement au tout début du Web, avant que l’on sache généralement que les adresses IP s’épuiseraient et que les mesures de conservation seraient mises en place. C’est toujours le cas pour les hôtes virtuels SSL (n’utilisant pas SNI).
Comme cette méthode de transmission du nom d'hôte nécessite que la connexion soit déjà établie, elle ne fonctionne pas avec les connexions SSL / TLS. Au moment de la configuration de la connexion sécurisée, le serveur Web doit déjà savoir quel nom d’hôte il servira au client, car le serveur Web lui-même est en train de configurer la connexion sécurisée.
SNI résout ce problème en demandant au client de transmettre le nom d'hôte dans le cadre de la négociation TLS, de sorte que le serveur sache déjà quel hôte virtuel doit être utilisé pour desservir la connexion. Le serveur peut ensuite utiliser le certificat et la configuration pour le bon hôte virtuel.
Pourquoi ne pas utiliser différentes adresses IP?
L'en- Host:
tête HTTP a été défini pour permettre à plusieurs hôtes Web d'être desservis à partir d'une seule adresse IP en raison de la pénurie d'adresses IPv4, reconnue comme un problème dès le milieu des années 90. Dans les environnements d'hébergement Web partagés, des centaines de sites Web uniques et non liés peuvent être servis à l'aide d'une seule adresse IP de cette manière, en économisant l'espace d'adressage.
Les environnements d'hébergement partagé ont alors découvert que le plus gros consommateur d'espace d'adressage IP était la nécessité pour les sites Web sécurisés de disposer d'adresses IP uniques, d'où la nécessité de SNI en tant que mesure décisive sur la voie du protocole IPv6. Aujourd'hui, il est parfois difficile d'obtenir aussi peu que 5 adresses IP (/ 29) sans justification significative, ce qui entraîne souvent des retards de déploiement.
Avec l'avènement de l'IPv6, de telles techniques de conservation des adresses ne sont plus nécessaires, puisqu'un seul hôte peut se voir attribuer plus d'adresses IPv6 que tout l'Internet actuel, mais ces techniques seront probablement encore utilisées dans le futur pour la maintenance des anciens services IPv4. les liaisons.
Mises en garde
Certaines combinaisons système d'exploitation / navigateur ne supportant pas SNI (voir ci-dessous), l'utilisation de SNI ne convient donc pas à toutes les situations. Les sites ciblant de telles combinaisons système / navigateur devraient renoncer à SNI et continuer à utiliser des adresses IP uniques pour chaque hôte virtuel.
Il convient de noter qu'aucune version d'Internet Explorer sur Windows XP ne prend en charge SNI. Comme cette combinaison représente toujours une portion significative (mais en diminution constante: environ 16% du trafic Internet en décembre 2012 selon NetMarketShare), le SNI serait inapproprié pour un site ciblant ces populations d'utilisateurs.
Soutien
De nombreux progiciels couramment utilisés prennent en charge SNI.
(Omission de cette liste ne signifie pas nécessairement un manque de support; cela signifie qu'il y avait une limite à la quantité que je pouvais taper, ou je ne pouvais pas trouver rapidement les informations dans une recherche. Si votre progiciel n'est pas répertorié, la recherche pour son nom, plus sni
devrait révéler si le support existe et comment le configurer.)
Soutien de la bibliothèque
La plupart des packages dépendent d'une bibliothèque externe pour assurer la prise en charge de SSL / TLS.
- GNU TLS
- JSSE (Oracle Java) 7 ou supérieur, uniquement en tant que client
- libcurl 7.18.1 ou supérieur
- NSS 3.1.1 ou supérieur
- OpenSSL 0.9.8j ou supérieur
- OpenSSL 0.9.8f ou supérieur, avec les drapeaux configure
- Qt 4.8 ou supérieur
Support serveur
La plupart des versions actuelles des logiciels de serveur courants prennent en charge SNI. Les instructions d'installation sont disponibles pour la plupart d'entre elles:
Support client
La plupart des navigateurs Web et des agents utilisateurs de ligne de commande actuels prennent en charge SNI.
Bureau
- Chrome 5 ou supérieur
- Chrome 6 ou supérieur sur Windows XP
- Firefox 2 ou supérieur
- Internet Explorer 7 ou supérieur, fonctionnant sous Windows Vista / Server 2008 ou supérieur
- Internet Explorer sous Windows XP ne prend pas en charge SNI, quelle que soit la version d'IE
- Konqueror 4.7 ou supérieur
- Opera 8 ou supérieur (peut nécessiter que TLS 1.1 soit activé pour fonctionner)
- Safari 3.0 sur Windows Vista / Server 2008 ou version ultérieure ou Mac OS X 10.5.6 ou version ultérieure
Mobile
- Navigateur Android sur 3.0 Honeycomb ou supérieur
- iOS Safari sur iOS 4 ou supérieur
- Windows Phone 7 ou supérieur
Ligne de commande
- curl 7.18.1 ou supérieur
- wget 1.14 ou supérieur (les distributions peuvent avoir rétroporté un correctif pour le support SNI)
Pas de support
- Navigateur BlackBerry
- Internet Explorer (toute version) sur Windows XP
(Remarque: certaines informations pour cette réponse ont été obtenues à partir de Wikipedia .)