Apache SSL HOWTO
Diese Anleitung beschreibt wie man Apache2 fit für SSL macht. Wenn alles korrekt eingerichtet wurde nimmt der Webserver verschlüsselte anfragen via https:// entgegen.
SSL-Zertifikat erstellen (Apache 2.2 und neuer)
Seit Apache 2.2 wird das Script apache2-ssl-certificate zumindest in Debian nicht mehr mitgeliefert, sodass man sich das Zertifikat per Hand erstellen muss. Folgende Befehle, erstellen das Zertifikat und einen Link auf das Zertifikat in /etc/apache/ssl. Sollte das Verzeichnis noch nicht existieren muss es vorher erstellt werden.
$ sudo openssl req -new -x509 -nodes -out /etc/apache2/ssl/apache.pem \
-keyout /etc/apache2/ssl/apache.pem
$ sudo chmod 600 /etc/apache2/ssl/apache.pem
$ sudo ln -sf /etc/apache2/ssl/apache.pem \
/etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0
SSL-Zertifikat erstellen (Apache 2.0 und älter)
Ein selbst signiertes Zertifikat erstellt man mit:
$ sudo apache2-ssl-certificate
Standardmäßig gilt dieses Zertifikat nur einige Tage, deswegen sollte man gegebenenfalls die Option -days Anzahl-der-Tage benutzen. Möchte man mehrere Subdomains mit einem Zertifikat bedienen ohne dass die Benutzer jedesmal eine Warnung erhalten, sollte man bei der Frage nach dem Domainnamen *.domainname.tld eingeben.
SSL Vorbereiten
Um die SSL-Verschlüsselten Seiten von den Unverschlüsselten zu trennen wird die Datei /etc/apache2/sites-enabled/ssl angelegt:
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
$ sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
Nun müssen beide Dateien etwas verändert werden um Apache klarzumachen, wann welche Datei benutzt werden soll:
ssl
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
...
</VirtualHost>
default
NameVirtualHost *:80
<VirtualHost *:80>
...
</VirtualHost>
Port öffnen
Damit Apache auch https-Anfragen entgegennehmen kann muss der entsprechende Port offen sein. Dazu fügt man in der Datei /etc/apache2/ports.conf gegebenenfalls folgende Zeile hinzu:
Listen 443
SSL Aktivieren
Um SSL nun zu aktivieren, müss das entsprechende Modul geladen werden,
$ sudo a2enmod ssl
und Apache neu gestartet werden
sudo apache2ctl restart
Das sollte es gewesen sein. Wenn alles geklappt hat, sollte Apache ohne zu meckern neu starten und https-Anfragen entgegennehmen.