Apache Virtual Host mit SSL einrichten
Ein kurzes HOWTO wie man einen Virtual Host für Apache mit einem selbst generierten SSL Zertifikat einrichtet. Diese Anleitung richtet sich nicht direkt an Beginner, da hier keinerlei Grundlagen erläutert werden. Bei Fragen versuche ich aber gerne in den Kommentaren zu helfen.
Die Anleitung bezieht sich auf einen Debian Etch Server und setzt Root Rechte vorraus.
Generierung des benötigen Zertifikats
Der folgende Punkt ist optional und nur notwendig wenn man vor hat, in Zukunft Zertifikate mit denselben Angaben zu erstellen. Hierzu editiert man das SSL Template unter /usr/share/ssl-cert/ssleay.cnf.
Nun erstellt man ein Verzeichniss um die Zertifikatsdaten zu speichern. Dieses sollte unbedingt vor fremden Zugriff geschützt sein, als Beispiel nehmen wir hier /root/ssl/ welches wir in späteren Schritten noch benötigen. Danach erstellen wir mit openssl den Key. Wobei domain-name.key natürlich durch den echten Namen ersetzt werden sollte. Ob 1024 bit genug sind, müsst Ihr selbst entscheiden, genauso was Ihr bei den einzelnen Punkten des Schlüssels angebt!
cd /root/
mkdir ssl
cd ssl
openssl genrsa -out domain-name.key 1024
Danach wird für das Zertifikat ein „Certificate Signing Request“ generiert:
openssl req -new -key domain-name.key -out domain-name.csr
Zur kurzen Kontrolle kann man überprüfen obs stimmt:
openssl req -noout -text -in domain-name.csr
Nun muß man das Zertifikat noch signieren:
openssl x509 -req -days 365 -in domain-name.csr -signkey domain-name.key -out domain-name.crt
Das war es auch schon, das Zertifikat ist Euer! Weiter gehts mit…
Apache SSL Modul (mod_ssl) aktivieren
Entweder man aktiviert es manuell, indem man einen Softlink setzt:
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/ssl.conf ssl.conf
ln -s ../mods-available/ssl.load ssl.load
oder indem man a2enmod nutzt:
sudo a2enmod ssl
Als nächstes muß man…
Apaches SSL Port öffnen
Damit der Apache auf dem SSL Port 443 auch Anfragen entgegen nimmt, muß dies einmalig aktiviert werden in der Datei /etc/apache2/ports.conf.
Das Listen aktiviert Ihr durch den folgenden Code:
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Jetzt wollen wir dem Apache eine Lernphase gönnen und aktivieren die vorher gemachten Einstellungen durch einen Neustart mittels:
/etc/init.d/apache2 restart
Eventuell reicht auch ein /etc/init.d/apache2 force-reload, hab ich aber nicht getestet.
Fast fertig, jetzt muß man nur noch…
SSL für den Virtual Host aktivieren
Da der Rest nur Config Kram ist, sollte ein Code Beispiel eigentlich am hilfreichsten sein:
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /root/ssl/domain-name.crt
SSLCertificateKeyFile /root/ssl/domain-name.key
ServerAdmin root@localhost
ServerName localhost
DocumentRoot /var/www/domain-name/
</VirtualHost>
Erstellt die VirtualHost Konfiguration unter /etc/apache2/sites-available/domain-name und verlinkt diese danach noch:
vim /etc/apache2/sites-available/domain-name
cd /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-available/domain-name .
Nochmal Apaches Konfiguration neuladen:
/etc/init.d/apache2 reload
Und schon solltet Ihr SSL auf Eurem VirtualHost nutzen können!