Mettre plusieurs certificats SSL sur la même machine / IP : TLS SNI
Peut-on configurer plusieurs certificats X509 / SSL sur un même serveur et unique numéro IP ? La réponse est oui grâce au SNI (Server Name Indication). Ce protocole est désormais reconnu par le plupart des navigateurs. Il peut cependant poser des problèmes sur d'anciens navigateurs internet, dans ce cas :
- Vos sites ont tous un nom qui se termine par le même domaine (*.domaine.fr)
Dans ce cas, utilisez un certificat Wildcard ou OmniDomaine - Vos sites ont des noms divers et vous n'avez qu'une seule adresse IP
Dans ce cas, utilisez un certificats Multiples Sites (SSL SAN) - Vos sites ont des noms divers et vous avez plusieurs adresses IP
Utilisez un certificat serveur par IP.
Attention : il n'est généralement pas possible de mettre plus d'un certificat SSL par couple adresse IP numéro de port (sauf avec TLS SNI, lire plus bas). En effet la négociation SSL intervient avant l'envoi des headers HTTP qui permettent de détecter quel serveur est demandé (sur les serveurs qui font du multihosting avec une seule adresse IP).
TLS Server Name Indication (SNI)
La RFC 4366 a créé une extension "server name indication" (SNI) qui permet lors de la connexion SSL au client (le navigateur web) de spécifier à quel serveur il veut se connecter, ce qui permettra au serveur de présenter le bon certificat.
Il faut désormais que les navigateurs et les serveurs implémentent cette extension.
En date de mi-2011, la situation est :
- Navigateurs compatibles :
- Internet Explorer 7+ (mais aucun IE sous XP ne marche, et il y a des soucis sur d'autres versions)
- Firefox 2+
- Opera 8+
- Chrome
- Safari 3.2.1+ sur Mac OS X 10.5.6+
- Safari sous Vista ou Seven
- MobileSafari sur iOS 4.0+
- WindowsPhone 7
- Android 3+
- Serveurs compatibles :
- Microsoft IIS8 (sous Windows Server 2012)
- OpenSSL 0.9.8f (0.9.8k recommandé)
- Apache 2.2.12+
- lighthttpd 1.4.24+
- Apache Tomcat avec Java 7+
- Navigateurs incompatibles :
- Internet Explorer sous XP
- Safari sous XP
- Blackberry
- Java 6
- Android 2.3
- Windows Mobile (marche à partir version 7)
- Serveurs incompatibles :
- Microsoft IIS avant la version 8
Exemples d'implémentation du SNI
- Exemple TBS CERTIFICATS de configuration du SNI sur Apache
- Globalsign : SNI + CloudSSL Implementation Guide, Hosting Multiple SSL on a Single IP Address
(Apache, DirectAdmin, Nginx, Reverse proxy / Load balancer Pound)
Document PDF : Implementation guide