L'identification du nom de serveur (SNI) est une extension des protocoles Secure Socket Layer (SSL) et TransportLayer Security (TLS) qui vous permet d'héberger plusieurs certificats SSL sur une adresse IP (Internet Protocol) unique. Cet article explique comment utiliser SNI pour héberger plusieurs certificats SSL dans Apache®.
Prérequis
Votre serveur doit répondre aux exigences suivantes pour utiliser SNI :
- Apache v2.2.12 ou version ultérieure
- OpenSSL® v 0.9.8j ou version ultérieure
- mod_ssl doit être installé
Les systèmes d'exploitation suivants prennent en charge SNI sans modifications supplémentaires :
- Red Hat® Enterprise Linux® (RHEL) 6 et versions ultérieures
- Fedora® 10 et versions ultérieures
- CentOS® 6
- Debian® 6 et versions ultérieures
- Ubuntu® 10.04 et versions ultérieures
Les systèmes d'exploitation suivants nécessitent qu'Apache, OpenSSL et mod_ssl soient compilés avec les versions appropriées :
- Red Hat Enterprise Linux 5
- Centos 5
Vérifier que mod_ssl est installé
Avant d'utiliser SNI, vérifiez que mod_ssl est installé en exécutant la commande suivante :
RHEL, CentOS et Fedora
yum list installed | grep mod_ssl
Systèmes d'exploitation Debian et Ubuntu
dpkg -s apache2.2-common
Si mod_ssl n'est pas installé, utilisez la commande suivante pour l'installer :
RHEL, CentOS et Fedora
yum install mod_ssl
Systèmes d'exploitation Debian et Ubuntu
Pour les systèmes d'exploitation Debian et Ubuntu, installez mod_ssl à l'aide de la commande suivante :
apt-get install apache2.2-common
Activez ensuite le module en exécutant a2enmod ssl; /etc/init.d/apache2 reload
.
Configurer les vhosts
Ajoutez les lignes suivantes dans votre fichier de configuration Apache racine (apache2.conf ou httpd.conf ):
# Ensure that Apache listens on port 443
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
SSLStrictSNIVHostCheck off
Dans le fichier de configuration vhost de chaque site, vous devez ajouter la configuration de votre hôte virtuel. Il devrait ressembler aux exemples suivants :
Premier serveur virtuel :
<VirtualHost *:443>
ServerName www.yoursite.com
DocumentRoot /var/www/site
SSLEngine on
SSLCertificateFile /path/to/www_yoursite_com.crt
SSLCertificateKeyFile /path/to/www_yoursite_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</Virtual Host>
Deuxième serveur virtuel :
<VirtualHost *:443>
ServerName www.yoursite2.com
DocumentRoot /var/www/site2
SSLEngine on
SSLCertificateFile /path/to/www_yoursite2_com.crt
SSLCertificateKeyFile /path/to/www_yoursite2_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</Virtual Host>
Vous pouvez tester la configuration avec un certificat auto-signé en utilisant la commande suivante :
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
Spécifiez le nom de domaine dans le nom commun section, puis redémarrez Apache.
Navigateurs pris en charge
SNI est pris en charge par la plupart des navigateurs, mais les navigateurs plus anciens tels qu'Internet Explorer® 6 et tout navigateur Windows® XP® ne prennent pas en charge SNI.
Navigateurs de bureau
-
Internet Explorer 7 et versions ultérieures
-
Firefox® 2 et versions ultérieures
-
Opera 8 avec TLS 1.1 activé
-
Google Chrome® :
- Compatible avec Windows XP sur Chrome 6 et versions ultérieures
- Pris en charge sur Vista et versions ultérieures par défaut
- Compatible avec OS X 10.5.7 dans Chrome 5.0.342.0 et versions ultérieures
-
Chromium® 11.0.696.28 et versions ultérieures
-
Safari 2.1 et versions ultérieures (nécessite OS X 10.5.6 et versions ultérieures ou Windows Vista et versions ultérieures).
Remarque : Aucune version d'Internet Explorer sur Windows XP ne prend en charge SNI.
Navigateurs mobiles
- Safari mobile pour iOS 4.0 et versions ultérieures
- Android 3.0 (Honeycomb) et versions ultérieures
- Windows Phone 7 et versions ultérieures
Navigateurs non pris en charge
Les navigateurs non pris en charge chargent le certificat SSL du premier vhost chargé par Apache. Vous pouvez afficher une erreur 403 à la place en ajoutant la ligne suivante au fichier de configuration Apache (apache2.conf , ou httpd.conf ):
SSLStrictSNIVHostCheck on