Schlagwort-Archive: filippo valsorda

Lokale HTTPS-Zertifikate mit mkcert

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:

mkcert - Installation & Zertifikate erzeugen
Installation von Root-Zertifikat und privatem Schlüssel sowie die Erzeugung von lokalen Zertifikaten für eine Domain mit mkcert.

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:

Sichere Verbindung zu lokaler Webseite mit mkcert
Das gewünschte Schloss wird neben der URL angezeigt. In den Details sieht man die gewünschten Infos.

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!