Server Name Identification (SNI) è un'estensione del protocollo Secure Socket Layer (SSL) e TransportLayer Security (TLS) che consente di ospitare più certificati SSL su un unico indirizzo IP (Internet Protocol). Questo articolo descrive come utilizzare SNI per ospitare più certificati SSL in Apache®.
Prerequisiti
Il tuo server deve soddisfare i seguenti requisiti per utilizzare SNI:
- Apache v2.2.12 o successivo
- OpenSSL® v 0.9.8j o successivo
- deve essere installato mod_ssl
I seguenti sistemi operativi supportano SNI senza ulteriori modifiche:
- Red Hat® Enterprise Linux® (RHEL) 6 e versioni successive
- Fedora® 10 e successivi
- CentOS® 6
- Debian® 6 e versioni successive
- Ubuntu® 10.04 e versioni successive
I seguenti sistemi operativi richiedono la compilazione di Apache, OpenSSL e mod_ssl con le versioni appropriate:
- Red Hat Enterprise Linux 5
- Cento 5
Verifica che mod_ssl sia installato
Prima di utilizzare SNI, verifica che mod_ssl sia installato eseguendo il comando seguente:
RHEL, CentOS e Fedora
yum list installed | grep mod_ssl
Sistemi operativi Debian e Ubuntu
dpkg -s apache2.2-common
Se mod_ssl non è installato, utilizzare il comando seguente per installarlo:
RHEL, CentOS e Fedora
yum install mod_ssl
Sistemi operativi Debian e Ubuntu
Per i sistemi operativi Debian e Ubuntu, installa mod_ssl utilizzando il comando seguente:
apt-get install apache2.2-common
Quindi abilitare il modulo eseguendo a2enmod ssl; /etc/init.d/apache2 reload
.
Configura i vhost
Aggiungi le seguenti righe nel file di configurazione di Apache root (apache2.conf o 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
Nel file di configurazione di vhost per ogni sito, è necessario aggiungere la configurazione dell'host virtuale. Dovrebbe essere simile ai seguenti esempi:
Primo host virtuale:
<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>
Secondo host:
<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>
Puoi testare la configurazione con un certificato autofirmato utilizzando il comando seguente:
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
Specificare il nome di dominio nel Nome comune sezione, quindi riavvia Apache.
Browser supportati
SNI è supportato dalla maggior parte dei browser, tuttavia i browser meno recenti come Internet Explorer® 6 e qualsiasi browser Windows® XP® non supportano SNI.
Browser per desktop
-
Internet Explorer 7 e versioni successive
-
Firefox® 2 e versioni successive
-
Opera 8 con TLS 1.1 abilitato
-
Google Chrome®:
- Supportato su Windows XP su Chrome 6 e versioni successive
- Supportato su Vista e versioni successive per impostazione predefinita
- Supportato su OS X 10.5.7 in Chrome versione 5.0.342.0 e successive
-
Chromium® 11.0.696.28 e versioni successive
-
Safari 2.1 e versioni successive (richiede OS X 10.5.6 e versioni successive o Windows Vista e versioni successive).
Nota: Nessuna versione di Internet Explorer su Windows XP supporta SNI.
Browser mobili
- Mobile Safari per iOS 4.0 e versioni successive
- Android 3.0 (Honeycomb) e versioni successive
- Windows Phone 7 e versioni successive
Browser non supportati
I browser non supportati caricano il certificato SSL del primo host virtuale caricato da Apache. Puoi invece visualizzare un errore 403 aggiungendo la seguente riga al file di configurazione di Apache(apache2.conf o httpd.conf ):
SSLStrictSNIVHostCheck on