In diesem Tutorial möchte ich zeigen wie man für einen Mac eine lokale vHost Konfiguration erstellt, und diese mit einem selbst signiertem SSL-Zertifikat absichert.
Ziel soll es eine eine Domain nach den folgenden Beispiel zu erstellen: https://www.meine-seite.loc. Dabei sollen die verschiedenen Browser nicht „meckern“ das das Zertifikat ungültig ist.
Voraussetzungen und Ordnerstruktur:
Ich setzte voraus das es eine lauffähige Apache Installation auf dem Rechner gibt (zum testen: localhost in der URL-Leiste des Browser eingeben und Enter drücken -> jetzt sollte eine Startseite vom Apache erscheinen) und openssl installiert ist. Ebenfalls setzte ich voraus das Administratoren-Rechte vorhanden sind sowie Kenntnisse einer Konsole.
Bei der Ordnerstruktur setzte ich voraus, das der Apache unter „/etc/apache2“ zu finden ist.
Unser eigenes Projekt (also die Webseite und die Zertifikate ) soll am ende unter „/Users/<username>/webseiten/<projektname>“ liegen.
<username> wird mit Ihrem Username ersetzt uns <projektname> mit dem Namen des zukünftigen Projektes.
Ok soviel zur Einleitung fangen wir an:
Als erstes Öffnen Sie eine Terminal und loggen Sie sich als „root“ ein:sudo -s
Dann stoppen Sie den Apache:apachectl stop
Nun erstellen wir einen Ordner für die zukünftigen Projektdateien:mkdir /Users/<username>/webseiten/<projektname>
und legen in diesem die Ordner einen Ordner für die Webseitendaten (die HTML Dateien)mkdir /Users/<username>/webseiten/<projektname>/www
und einen Ordner für die SSL-Zertifikate an:mkdir /Users/<username>/webseiten/<projektname>/ssl
Nachdem nun alle notwendigen Ordner angelegt sind, wechseln wir in den neu angelegten SSL-Ordner cd /Users/<username>/webseiten/<projektname>/ssl
und erstellen die ersten beiden Zertifikate:
openssl genrsa -out cert.key 2048
openssl rsa -in cert.key -out cert.key.rsa
Als nächstes legen wir eine Konfigurations-Datei an (ich nutzte hier „nano“, Sie können natürlich jeden anderen Editor benutzen):nano cert.conf
in diese Datei muss folgender Inhalt (Bitte die DNS.1 und DNS.2 Bereiche anpassen):
[req]
default_bits = 1024
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = meine-seite.loc
DNS.2 = *.meine-seite.loc
Jetzt können die Restlichen Zertifikate erstellt werden (bitte „www.meine-seite.loc mit Ihren Daten anpassen).
openssl req -new -key cert.key.rsa -subj "/C=/ST=/L=/O=/CN=www.meine-seite.loc" -out cert.csr -config cert.conf
openssl x509 -req -extensions v3_req -days 365 -in cert.csr -signkey cert.key.rsa -out cert.crt -extfile cert.conf
Jetzt müssen wir unseren System die neuen Zertifikate bekannt machen, das diese Fehlermeldung bezüglich falscher oder ungültiger Zertifikate nicht mehr erscheint.security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain cert.crt
So, jetzt haben wir uns um alle Zertifikate gekümmert und könnten theoretisch unser Seite lokal und SSL verschlüsselt aufrufen, Wenn da nicht noch was Fehlen würde…. genau, die vHost Konfiguration.
Um nun die Seite via https://… aufzurufen muss in der vHost Konfigurationsdatei folgende Zeilen hinterlegt werden:
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /Users/<username>/webseiten/<projektname>/ssl/cert.crt
SSLCertificateKeyFile /Users/<username>/webseiten/<projektname>/ssl/cert.key
Und nun wieder den Apache startenapachectl start
und warten bis dieser fertig ist. Danach in den Browser wechseln und die die lokale Webseite mit https:// aufrufen.
Das wars!