Bernhard hatte unsere Kollegen bei VCAT vor gut 2 Wochen auf einen Artikel bei Golem.de hingewiesen. Hier ging es darum, dass Filippo Valsorda – ein Verschlüsselungsexperte aus dem Google Go Team – ein kleines Werkzeug entwickelt hat, mit dem man eigene Zertifikate erstellen kann, um sichere HTTPS-Verbindungen in einer lokalen Entwicklungsumgebung zu nutzen.
Die Herausforderung
Bereits seit 2017 sollten Webseiten grundsätzlich alle Inhalte über eine gesicherte HTTPS-Verbindung ausliefern. Mittlerweile verweigern immer mehr Browser die Anzeige von ungesicherten Seiten. Dank kostenfreier Tools wie Let’s Encrypt ist die Erzeugung von Zertifikaten für Domains, die im WWW erreichbar sind, kein Problem. Anders sieht dies für Adressen aus, die für Entwicklungsaufgaben nur lokal oder im privaten Netzwerk zu erreichen sind. Da diese Domains nicht vom öffentlichen Netzwerk aus aufgerufen werden können, kann ein extern laufender Service zur Erstellung eines Zertifikates auch nicht auf diese zugreifen.
Die Lösung
Mit mkcert steht nun ein kleines, aber sehr feines Tool zur Verfügung, um lokal eigene HTTPS-Zertifikate für eine beliebige Domain zu erzeugen. Ich habe es auf einem Rechner mit Windows 10 und XAMPP getestet. Das ging unglaublich leicht und lässt sich jederzeit für weitere Adressen wiederholen:
Einsatz unter Windows 10 mit XAMPP
Lokal entwickle ich unter dem Namespace
*.local
Für die Arbeiten an meinem Wiki-Tooltip-Plugin für WordPress habe ich z.B. die Domain
dev.n1da.net.local
im Einsatz.
Der Web- und Datenbank-Server wird von dem bekannten Toolkit XAMPP bereitgestellt.
Installation
Die Installation von mkcert ist sehr einfach: Man findet Pakete für verschiedene Betriebssysteme zum Download bei GitHub! DIe Version für Windows muss man nur herunterladen und in ein beliebiges Verzeichnis verschieben. Ich habe es der Einfachheit halber unter
c:\Program Files>
abgelegt. Für die nächsten Schritte muss man einfach eine Shell starten. Ich habe die Standard-Eingabeaufforderung verwendet. Je nachdem, wie die Rechte eingestellt sind, muss man sie als Administrator ausführen! Dann wechselt man in das Verzeichnis, wo die mkcert.exe liegt und startet die Installation:
mkcert.exe -install
Diese Anweisung installiert nicht wirklich eine Anwendung. Vielmehr werden zwei Dateien mit einem Root-Zertifikat und einem privaten Schlüssel erzeugt. Man muss eine Sicherheitswarnung von Windows bestätigen und erhält als Ausgabe die Pfadangabe, unter der man die Dateien finden kann.
Zertifikate erzeugen
Nach der Installation kann man nun beliebig oft SSL-Zertifikate erzeugen. In meinem Beispiel mit der Anweisung:
mkcert.exe dev.n1da.net.local
Dadurch werden im aktuellen Verzeichnis wiederum zwei Dateien erzeugt: das Zertifikat für die genannte Domain sowie ein Schlüssel dafür. Beide Dateien kann man nun in einen beliebigen Ordner verschieben, der durch XAMPP erreicht werden kann.
Die Ein- und Ausgaben der Aufrufe sieht man in diesem Screenshot:
XAMPP konfigurieren
Nun muss man den Apache im XAMPP nur noch für die Verwendung von SSL konfigurieren. Dazu habe ich einfach die httpd-vhosts.conf wie folgt angepasst:
<VirtualHost *:443>
ServerName dev.n1da.net.local
ServerAdmin webmaster@n1da.net
DocumentRoot "C:/<-- PATH TO WEB-ROOT -->/xampp/dev.n1da.net.local/public"
ErrorLog "logs/dev.n1da.net.local-error.log"
CustomLog "logs/dev.n1da.net.local-access.log" common
SSLEngine on
SSLCertificateFile "C:/<-- PATH TO WEB-ROOT -->/xampp/dev.n1da.net.local/dev.n1da.net.local.pem"
SSLCertificateKeyFile "C:/<-- PATH TO WEB-ROOT -->/xampp/dev.n1da.net.local/dev.n1da.net.local-key.pem"
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory "C:/<-- PATH TO WEB-ROOT -->/xampp/dev.n1da.net.local/public">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
Nach einem (Neu-)Start von XAMPP bzw. des Apache kann man die lokale Domain über HTTPS aufrufen:
Fazit
mkcert ist ein sehr leichtes Tool – in doppelter Hinsicht: Es kommt ohne großen Schnick-Schnack daher und ermöglicht ohne viel technische Kenntnisse die Erzeugung von lokalen HTTPS-Zertifikaten. Prädikat: Besonders wertvoll!
Ein Kommentar