Menü

Erweitern einer lokalen vHost Konfiguration mit selbst erstelltem SSL-Zertifikat für einen MAC

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 starten
apachectl start
und warten bis dieser fertig ist. Danach in den Browser wechseln und die die lokale Webseite mit https:// aufrufen.

Das wars!