Um die verschlüsselten SSL-Verbindungen kümmert sich das Apache-Modul
»mod_ssl
«
. Unter vielen, aber leider nicht allen Linux-Distributionen ist es von Haus aus aktiviert. Der Apache-Server lädt
»mod_ssl
«
, wenn in seinen Konfigurationsdateien irgendwo die folgende Zeile auftaucht:
LoadModule ssl_module modules/mod_ssl.so
Meist findet man sie in der zentralen
»httpd.conf
«
, CentOS lagert die Zeile in die Datei
»/etc/httpd/conf.d/ssl.conf
«
aus. Wer die Standardkonfigurationsdateien verwendet, muss vor der oben genannten Zeile lediglich das Hash-Zeichen entfernen. Alternativ bieten einige Linux-Distributionen, darunter Debian, Ubuntu und Open Suse, das Skript
»a2enmod
«
an, das dynamisch ladbare Apache-Module aktiviert. Der Benutzer Root aktiviert damit
»mod_ssl
«
via:
a2enmod ssl
Unter Open Suse ist zusätzlich noch der Befehl
»a2enflag SSL
«
notwendig. Sofern das Skript
»a2enmod
«
vorhanden ist, sollte man es möglichst auch nutzen. Die Distributionen setzen dann meist mehrere, teilweise sogar automatisiert erzeugte Konfigurationsdateien ein. Debian etwa schaltet einzelne Module über symbolische Links ein und aus.
Anfragen via HTTPS trudeln normalerweise an Port 443 ein. Damit Apache dort lauscht, muss man seine Konfiguration um folgenden Abschnitt ergänzen:
<IfModule mod_ssl.c> Listen 443 </IfModule>
In welche Konfigurationsdatei dieser Abschnitt gehört, hängt von der Apache-Installation ab. Unter Debian-basierten Systemen steckt er bereits in der Datei
»/etc/apache2/ports.conf
«
, unter Open Suse 12.3 hingegen in der Datei
»/etc/apache2/listen.conf
«
und bei CentOS in
»/etc/httpd/conf.d/ssl.conf
«
. Gegebenenfalls muss man alle vorangestellten Hash-Zeichen
»#
«
entfernen und so den Abschnitt auskommentieren. Wer die Standardkonfigurationsdatei verwendet, wie sie etwa auch dem Windows-Binärpaket von Apache beiliegt, muss in der
»httpd.conf
«
lediglich in der Zeile
#Include conf/extra/httpd-ssl.conf
das Hash-Zeichen entfernen. Damit liest Apache die Datei
»httpd-ssl.conf
«
im Unterverzeichnis
»extra
«
, die den benötigten Abschnitt enthält.
Damit Apache die HTTPS-Anfragen beantwortet, muss ein neuer virtueller Host her.
Listing 1
zeigt dafür ein einfaches Beispiel: Nach dem Festlegen von Servernamen und Document Root schaltet
»SSLEngine On
«
die Verschlüsselung ein. Das Document-Root-Verzeichnis sollte man wohlüberlegt wählen: Ist es beispielsweise identisch mit dem global festgelegten Document-Root-Verzeichnis, können Besucher die dortigen Seiten sowohl über eine gesicherte als auch eine ungesicherte Verbindung abrufen. Das ist normalerweise auch der Fall, wenn man beim SSL-Host die
»DocumentRoot
«
-Direktive weglässt. Man sollte daher möglichst verschiedene Document Roots verwenden oder den Zugriff auf die entsprechenden Teile der Website anderweitig reglementieren, etwa über das Rewrite-Module.
Listing 1
Virtueller Host mit TLS
»SSLCertificateFile
«
deutet auf den Speicherort des Zertifikats,
»SSLCertificateKeyFile
«
verrät die Datei mit dem privaten Schlüssel. Sofern man ein Zertifikat verwendet, in das der private Schlüssel eingebettet ist, kann man
»SSLCertificateKeyFile
«
weglassen. Aus Sicherheitsgründen sollte man jedoch den privaten Schlüssel immer wie hier gezeigt in eine eigene Datei auslagern.
Zugriffsversuche via SSL protokolliert die Log-Datei
»/var/log/apache2/ssl_request_log
«
. Fehlermeldungen wandern in die Datei
»ssl_error_log
«
, alle Anfragen sammelt
»ssl_access_log
«
. Den Zugriff auf die Seiten der Domain regelt wie üblich ein
»Directory
«
-Abschnitt.
Listing 1
speichert man am besten in einer eigenen Konfigurationsdatei. In welches Verzeichnis sie gehört, hängt wieder von der Apache-Installation ab. Debian-Admins legen sie unter
»/etc/apache2/sites-available
«
ab und benennen sie so wie
»ServerName
«
. Anschließend muss man die Datei noch explizit mit
»a2ensite login.example.com
«
aktivieren, wobei
»login.example.com
«
für den Namen der neuen Konfigurationsdatei steht. Im Fall von Open Suse spendiert man der Datei aus
Listing 1
die Endung
».conf
«
und platziert sie dann im Verzeichnis
»/etc/apache2/vhosts.d
«
. CentOS und dem Windows-Binärpaket von Apache liegt bereits eine Beispielkonfiguration für einen virtuellen Host bei, die sich einfach gemäß
Listing 1
anpassen lässt. In CentOS findet man sie in der Datei
»/etc/httpd/conf.d/ssl.conf
«
, unter Windows liegt sie in der Datei
»httpd-ssl.conf
«
im Ordner
»conf\extra
«
der Apache-Installation.