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.
Tags: Apache, ssl, tls, zertifikate
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
[…] http://www.tech-nerds.de/blog/2009/02/apache2-mit-mehreren-ssl-virtualhosts/ […]