Server Name Identification (SNI) je rozšířením protokolů Secure Socket Layer (SSL) a TransportLayer Security (TLS), které vám umožňuje hostovat více certifikátů SSL na jediné jedinečné adrese internetového protokolu (IP). Tento článek popisuje, jak používat SNI k hostování více certifikátů SSL v Apache®.
Předpoklady
Váš server musí splňovat následující požadavky, aby mohl používat SNI:
- Apache v2.2.12 nebo novější
- OpenSSL® v 0.9.8j nebo novější
- musí být nainstalován mod_ssl
Následující operační systémy podporují SNI bez dalších úprav:
- Red Hat® Enterprise Linux® (RHEL) 6 a novější
- Fedora® 10 a novější
- CentOS® 6
- Debian® 6 a novější
- Ubuntu® 10.04 a novější
Následující operační systémy vyžadují, aby byly Apache, OpenSSL a mod_ssl zkompilovány se správnými verzemi:
- Red Hat Enterprise Linux 5
- Centos 5
Zkontrolujte, zda je nainstalován mod_ssl
Než použijete SNI, zkontrolujte, zda je nainstalován mod_ssl spuštěním následujícího příkazu:
RHEL, CentOS a Fedora
yum list installed | grep mod_ssl
Operační systémy Debian a Ubuntu
dpkg -s apache2.2-common
Pokud mod_ssl není nainstalován, použijte k jeho instalaci následující příkaz:
RHEL, CentOS a Fedora
yum install mod_ssl
Operační systémy Debian a Ubuntu
Pro operační systémy Debian a Ubuntu nainstalujte mod_ssl pomocí následujícího příkazu:
apt-get install apache2.2-common
Poté modul povolte spuštěním a2enmod ssl; /etc/init.d/apache2 reload
.
Nastavit vhosts
Přidejte následující řádky do svého kořenového konfiguračního souboru Apache (apache2.conf nebo 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
V konfiguračním souboru vhost pro každý web musíte přidat konfiguraci virtuálního hostitele. Měl by vypadat podobně jako následující příklady:
První vhost:
<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>
Druhý vhost:
<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>
Konfiguraci můžete otestovat pomocí certifikátu s vlastním podpisem pomocí následujícího příkazu:
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
Do pole Běžný název zadejte název domény a poté restartujte Apache.
Podporované prohlížeče
SNI podporuje většina prohlížečů, ale starší prohlížeče, jako je Internet Explorer® 6 a jakýkoli prohlížeč Windows® XP®, SNI nepodporují.
Prohlížeče pro stolní počítače
-
Internet Explorer 7 a novější
-
Firefox® 2 a novější
-
Opera 8 s povoleným TLS 1.1
-
Google Chrome®:
- Podporováno v systému Windows XP v prohlížeči Chrome 6 a novějším
- Ve výchozím nastavení podporováno systémem Vista a novějším
- Podporováno na OS X 10.5.7 v Chrome verze 5.0.342.0 a novější
-
Chromium® 11.0.696.28 a novější
-
Safari 2.1 a novější (vyžaduje OS X 10.5.6 a novější nebo Windows Vista a novější).
Poznámka: Žádné verze aplikace Internet Explorer v systému Windows XP nepodporují SNI.
Mobilní prohlížeče
- Mobilní Safari pro iOS 4.0 a novější
- Android 3.0 (Honeycomb) a novější
- Windows Phone 7 a novější
Nepodporované prohlížeče
Nepodporované prohlížeče načtou certifikát SSL prvního vhost, který Apache načte. Místo toho můžete zobrazit chybu 403 přidáním následujícího řádku do konfiguračního souboru Apache (apache2.conf nebo httpd.conf ):
SSLStrictSNIVHostCheck on