Apache2 mit mehreren SSL-VirtualHosts
6. Februar 2009, 17:05 | Autor: Marc | Kategorie(n) Netzwerke, Sicherheit.Wer mehrere Domains auf einem Webserver betreibt, wird möglicherweise den Wunsch haben, hier verschiedene SSL-Zertifikate für die jeweiligen Domains zu installieren. Allerdings kann der Server erst nach dem SSL-Handshake entscheiden, welchen Host der Browser angefragt hat.
Abhilfe schafft das die TSL-Erweiterung SNI (Server Name Indication). Unterstützt wird diese doch recht sinnvolle Neuerung aber bisher nur von gnutls. Die Installation auf einem Debian-Server wird hier kurz beschrieben und sollte auch auf anderen Systemen mit geringen Anpassungen machbar sein.
Als Allererstes steht die Installation des Pakets apache2-threaded-dev auf dem Programm (sofern noch nicht geschehen). Dann wird die aktuelle gnutls-Version benötigt. Und zwar von gnu.org. Herunterladen, entpacken, konfigurieren, kompilieren, installieren kennt man ja. Dann benötigen div. Systeme noch einen Aufruf von ldconfig. Anschließend kann dann bereits das Apache-Modul heruntergeladen und installiert werden. Zu bekommen ist es hier.
Die Installationsprozedur verläft hier auch unspektakulär normal. Ich musste configure allerdings den Pfad von apxs2 mitgeben:./configure --with.apxs2=/usr/bin/apxs2
make install
kopiert das Apache-Modul dann (hoffentlich) an die richtige Stelle. In diesem Fall /usr/lib/apache2/modules
Die Datei /etc/apache2/mods-enabled/gnutls.load wird nun mit folgendem Inhalt erstellt: LoadModule gnutls_module /usr/lib/apache2/modules/mod_gnutls.so
Und auch die Datei /etc/apache2/mods-enabled/gnutls.conf muss erstellt werden. Sie sollte Folgendes enthalten:<IfModule gnutls_module>
GnuTLSCache dbm /var/cache/mod_gnutls_cache
GnuTLSCacheTimeout 300
</IfModule>
Natürlich müssen die virtuellen Hosts noch angepasst werden. Jeder vHost, der SSL verwenden soll, benötigt folgende Zeilen:<VirtualHost 192.168.1.250:443>
ServerName www.example.de
GnuTLSEnable on
GnuTLSPriorities NORMAL
GnuTLSCertificateFile /etc/certs/example_server.pem
GnuTLSKeyFile /etc/certs/example_key.pem
DocumentRoot "/var/www/example.de"
...
</DocumentRoot>
Die möglicherweise bisher vorhandenen Zeilen, beginnend mit SSL, müssen selbstverständlich den neuen Angaben weichen.
Achtung: Die VirtualHosts-Direktiven müssen mit IP-Adresse definiert werden. Ggf. werden also für ein DocumentRoot 2 Einträge erstellt, beispielsweise bei paralleler Verwendung von IPv4 & IPv6.


Nette Sache, vorallem wenn man jetzt anfängt IPv6 zu nutzen…
Gruß Florian
Vielen Dank! Genau nach dieser Anleitung habe ich gesucht
Vielen Dank! Als kleine Info, die IP ist nicht notwendig in der VirtualHost Direktive. Es funktioniert auch mit einem Platzhalter (*). MfG Mav