Server Name Identification (SNI) ist eine Erweiterung des Secure Socket Layer (SSL)- und TransportLayer Security (TLS)-Protokolls, mit der Sie mehrere SSL-Zertifikate unter einer einzigen, eindeutigen IP-Adresse (Internet Protocol) hosten können. Dieser Artikel beschreibt die Verwendung von SNI zum Hosten mehrerer SSL-Zertifikate in Apache®.
Voraussetzungen
Ihr Server muss die folgenden Anforderungen erfüllen, um SNI zu verwenden:
- Apache v2.2.12 oder höher
- OpenSSL® v 0.9.8j oder höher
- mod_ssl muss installiert sein
Die folgenden Betriebssysteme unterstützen SNI ohne zusätzliche Modifikationen:
- Red Hat® Enterprise Linux® (RHEL) 6 und höher
- Fedora® 10 und höher
- CentOS® 6
- Debian® 6 und höher
- Ubuntu® 10.04 und höher
Die folgenden Betriebssysteme erfordern, dass Apache, OpenSSL und mod_ssl mit den richtigen Versionen kompiliert werden:
- Red Hat Enterprise Linux 5
- Cento 5
Überprüfen Sie, ob mod_ssl installiert ist
Überprüfen Sie vor der Verwendung von SNI, ob mod_ssl installiert ist, indem Sie den folgenden Befehl ausführen:
RHEL, CentOS und Fedora
yum list installed | grep mod_ssl
Debian- und Ubuntu-Betriebssysteme
dpkg -s apache2.2-common
Wenn mod_ssl nicht installiert ist, installieren Sie es mit dem folgenden Befehl:
RHEL, CentOS und Fedora
yum install mod_ssl
Debian- und Ubuntu-Betriebssysteme
Installieren Sie für die Betriebssysteme Debian und Ubuntu mod_ssl mit dem folgenden Befehl:
apt-get install apache2.2-common
Aktivieren Sie dann das Modul, indem Sie a2enmod ssl; /etc/init.d/apache2 reload
.
vhosts einrichten
Fügen Sie die folgenden Zeilen in Ihre Root-Apache-Konfigurationsdatei (apache2.conf oder 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
In der vhost-Konfigurationsdatei für jede Site müssen Sie Ihre virtuelle Hostkonfiguration hinzufügen. Es sollte ähnlich wie in den folgenden Beispielen aussehen:
Erster 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>
Zweiter 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>
Sie können die Konfiguration mit einem selbstsignierten Zertifikat testen, indem Sie den folgenden Befehl verwenden:
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
Geben Sie den Domänennamen im Feld Common Name an Abschnitt und starten Sie dann Apache neu.
Unterstützte Browser
SNI wird von den meisten Browsern unterstützt, ältere Browser wie Internet Explorer® 6 und alle Windows® XP®-Browser unterstützen SNI jedoch nicht.
Desktop-Browser
-
Internet Explorer 7 und höher
-
Firefox® 2 und höher
-
Opera 8 mit aktiviertem TLS 1.1
-
Google Chrome®:
- Unterstützt von Windows XP auf Chrome 6 und höher
- Unter Vista und höher standardmäßig unterstützt
- Unterstützt auf OS X 10.5.7 in Chrome-Version 5.0.342.0 und höher
-
Chromium® 11.0.696.28 und höher
-
Safari 2.1 und höher (erfordert OS X 10.5.6 und höher oder Windows Vista und höher).
Hinweis: Keine Version von Internet Explorer unter Windows XP unterstützt SNI.
Mobile Browser
- Mobile Safari für iOS 4.0 und höher
- Android 3.0 (Honeycomb) und höher
- Windows Phone 7 und höher
Nicht unterstützte Browser
Nicht unterstützte Browser laden das SSL-Zertifikat des ersten vhost, den Apache lädt. Sie können stattdessen einen 403-Fehler anzeigen, indem Sie der Apache-Konfigurationsdatei (apache2.conf) die folgende Zeile hinzufügen , oder httpd.conf ):
SSLStrictSNIVHostCheck on