Wenn man auf seinem privatem Server Webseiten nutzt, die eine Authentifizierung jeglicher Art verwenden, sollte man sich Gedanken über die Verschlüsselung der Übertragung machen (Man in the Middle wäre dafür nur ein Stichwort!).

So kam es dazu, dass ich vor Kurzem mir selbiges vorgenommen habe: Der Einsatz von SSL Zertifikaten im Apache2 für meine Webseiten. Allerdings sind solche Zertifikate von VeriSign und Co. nicht immer finanziell stemmbar für private Webseiten. Daraufhin erinnerte ich mich an einen Beitrag von Jeffrey, welcher von kostenlosen Zertifikaten von StartSSL handelt.

Die Zertifizierungsstelle genehmigt das Erstellen kostenloser Class 1 Zertifikate mit SSL 3.0 / TLS für eure Webseite, oder auch andere Zwecke. Der Vorteil dieser Root CA gegenüber anderen kostenloses ist es, dass sie in den meisten Browsern und Systemen bereits eingebunden ist und somit der Endanwender keine abschreckenden Meldungen erhält.

Wie ihr die Zertifikate erstellt und an euren eigenen Apache2 anbindet, erfahrt ihr von im Folgenden….

1. SSL – Zertifikate erstellen bei StartSSL

1.1 Anmelden

Zunächst müsst ihr euch anmelden, um den Dienst nutzen zu können. Dazu klickt ihr im Control Panel auf „Sign Up“ und gebt eure Daten ein, und bestätigt die E-Mail. Statt einer klassischen Benutzer:Passwort Authentifizierung wird euch ein persönliches X.509 Zertifikat nach PKCS#12 erstellt. Dieser ist dann in eurem Browser installiert, ihr solltet euch davon ein Backup anlegen.

Sobald dies installiert ist, gelangt ihr ohne Probleme in die Benutzeroberfläche.

1.2 Validierung

Bevor ihr ein Zertifikat für eure Webseite bekommt, müsst ihr deren Besitz zunächst validieren. Im „Validation Wizard“ muss daher „Domain Name Validation“ ausgewählt werden.

Daraufhin müsst ihr eure Webseite ohne Subdomain eingeben (z.B. dermute.de).

Im nächsten Schritt müsst ihr eine E-Mail Adresse auswählen aus hostmaster@… postmaster@… und webmaster@… . An der gewählten Adresse erhaltet ihr eine Mail mit einem Validierungscode, den ihr im Formular eingeben müsst.

Nach erfolgreicher Validierung müsstet ihr eure Domain in der Übersicht rechts unter „Domain Validations“ finden.

1.3 Generierung des Zertifikats

Nachdem eure Identität und der Besitz der Domain bestätigt wurde kann es mit der Zertifikatserstellung weitergehen. Wählt im „Certificates Wizard“ dazu „Web Server SSL/TLS Certificate“. Für andere Zwecke könntet ihr StartSSL auch nutzen.

Für jedes dieser Zertifikate müsst ihr

im nächsten Schritt ein privates Passwort anlegen. Damit ihr die Passwörter nicht vergesst, empfehle ich das Nutzen einer Passwortdatenbank mit KeePass. In Version 2 könnt ihr dann auch sämtliche dazugehörigen Dateien an den Datenbankeintrag anhängen.

Wählt SHA2 als Hash-Algorithmus aus. Im nächsten Schritt bekommt ihr den private Key. Kopiert diesen in einen Texteditor eurer Wahl und speichert ihn als „ssl-enc.key“ ab.

Wählt danach die Domain, zu welcher ihr das Zertifikat erstellen w

ollt. Dabei ist zu beachten, dass die Domain innerhalb der letzten 30 Tage validiert werden musste. Gebt im nächsten Schritt die Subdomain ein (z.B. „www“). Das Zertifikat gilt dann für subdomain.domain.tld und domain.tld.

Im Anschluss erhaltet ihr das eigentliche Zertifikat! Kopiert dies wie beim private Key und speichert es als „ssl.crt“.

 

Für Apache2 benötigt ihr allerdings noch den nicht-verschlüsselten private Key. Am einfachsten nutzt ihr dazu die Toolbox von StartSSL mit der Option „Decrypt Private Key“.

Fügt euren verschlüsselten private Key, sowie das Passwort ein und klickt auf „Decrypt“. Speichert dann wie zuvor die nun erhaltene Datei als „ssl.key“.

Nachdem ihr alle wichtigen Dateien habt, könnt ihr diese in eurem Apache2 Server einbinden.

2. Apache2 mit SSL – Zertifikaten ausstatten

2.1 Vorbereitungen

Bevor ihr die Zertifikate einsetzt, muss Apache2 erstmal auf Port 443 hören um eine geschützte Verbindung überhaupt zuzulassen.

Stellt dazu sicher, dass in eurer „/etc/apache2/ports.conf“ folgender Eintrag vorhanden ist:

<IfModule mod_ssl.c>
#NameVirtualHost *:443
Listen 443
</IfModule>

Der Eintrag „NameVirtualHost *:443“ ist nicht zwingend erforderlich. Dies ist abhängig von der Konfiguration eurer Vhosts. Ich persönlich benötige den Eintrag.

Aktiviert danach die SSL – Unterstütztung mittels Modul:

service a2enmod ssl
apache2 force-reload

2.2 Einbinden der SSL – Zertifikate

Zunächst müsst ihr das Zertifikat „ssl.crt“ und den entschlüsselten private Key „ssl.key“ auf dem Server ablegen, dazu empfiehlt sich das Verzeichnis „/etc/apache2/ssl/“. Das Umbenennen der Daten ist ebenso ratsam.

Nun müssen die Vhosts angepasst werden. Dies zeige ich am Beispiel „test.dermute.de“. Statt einer normalen, unverschlüsselten Verbindung über Port 80 soll ausschließlich HTTPS genutzt werden. Hier seht ihr den exemplarisch eingestellten Vhost:

<VirtualHost *:80>
        ServerName test.dermute.de
        ServerAdmin webmaster@dermute.de

        ErrorLog /var/log/apache2/error_test.dermute.log
        LogLevel warn
        CustomLog /var/log/apache2/access_test.dermute.log combined

        Redirect / https://test.dermute.de/   #Weiterleitung an HTTPS
</VirtualHost>

<VirtualHost *:443>
        ServerName test.dermute.de
        DocumentRoot /var/www/test
        ServerAdmin webmaster@dermute.de

        ErrorLog /var/log/apache2/error_test.dermute.log
        LogLevel warn
        CustomLog /var/log/apache2/access_test.dermute.log combined

       <Directory /var/www/test>
                Options SymLinksIfOwnerMatch
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        SSLEngine On   #Aktivierung der SSLEngine
        SSLCertificateFile /etc/apache2/ssl/test.dermute.de.crt   #Einbindung des SSL - Zertifikates
        SSLCertificateKeyFile /etc/apache2/ssl/test.dermute.de.key   #Einbindung der SSL - KeyFile
</VirtualHost>

Was ihr aus diesem Beispiel entnehmen sollt ist folgendes: Ich leite von der normalen HTTP – Verbindung auf Port 80 einfach direkt an die geschützte Seite auf Port 443 weiter. Im letzten Absatz sind dort die SSL – Zertifikate eingebunden.

Damit die Änderungen an eurem Vhost übernommen werden, müsst ihr die Konfiguration neu laden:

service apache2 reload

Beim Aufrufen eurer Seite sollte euch euer Browser die authentifizierte Verbindungssicherung dank StartSSL Root CA bestätigen.

 

Das wars dann auch schon.

Ich wünsche euch viel Spaß mit sicheren Verbindungen 🙂