Website-Suche

mkcert: Erstellung eines vertrauenswürdigen SSL-Zertifikats für die lokale Entwicklung


Wenn Sie jemals versucht haben, HTTPS lokal für die Entwicklung einzurichten, sind Sie wahrscheinlich auf eine Wand der Komplexität gestoßen. Ein selbstsigniertes Zertifikat zu erstellen, Ihren Browser dazu zu bringen, ihm zu vertrauen, und mit den Warnungen umzugehen, kann wirklich mühsam sein. Genau hier kommt mkcert ins Spiel.

mkcert ist ein einfaches Werkzeug, das Entwicklern und Systemadministratoren ermöglicht, lokal vertrauenswürdige SSL-Zertifikate für Entwicklung und Tests zu erstellen, wodurch die lästigen Browserwarnungen entfallen. Und ja, es ist kostenlos, Open-Source und funktioniert hervorragend unter Linux.

In diesem Leitfaden erkläre ich Ihnen, was mkcert ist, wie es funktioniert, wie man es installiert und wie man es effektiv in einer Linux-Umgebung verwendet.

Warum brauchen wir HTTPS lokal?

Bevor wir uns mkcert ansehen, werfen wir einen kurzen Blick darauf, warum Sie überhaupt HTTPS in Ihrer Entwicklungsumgebung haben möchten.

  • Moderne Web-Apps benötigen HTTPS – Viele APIs, Service Worker, Cookies und Browser-Funktionen erfordern sichere Verbindungen. Ohne HTTPS kann sich Ihre App in der Entwicklung anders verhalten als in der Produktion.
  • Übereinstimmende Produktionsumgebungen – Wenn Ihre Produktionsumgebung HTTPS verwendet (was sie tun sollte), ist es klug, während der Entwicklung alles unter denselben Bedingungen zu testen.
  • Browserkompatibilität und Testing – Chrome, Firefox und andere moderne Browser setzen strengere Sicherheitsrichtlinien für unsichere Ursprünge (HTTP) durch.

Aber hier ist der Haken: Browser hassen selbstsignierte Zertifikate, und sie zeigen beängstigende Warnungen an, es sei denn, das Zertifikat wird von einer vertrauenswürdigen Zertifizierungsstelle (CA) signiert.

Was ist mkcert?

mkcert ist ein Kommandozeilen-Tool, das lokal vertrauenswürdige Entwicklungzertifikate erstellt.

Es macht dies durch:

  • Erstellen einer eigenen Zertifizierungsstelle (CA) auf Ihrem System
  • Ihr Betriebssystem und Ihre Browser dazu bringen, dieser lokalen Zertifizierungsstelle zu vertrauen
  • Erzeugung von TLS-Zertifikaten, die von dieser CA signiert sind, damit Browser ihnen vertrauen

Einfach ausgedrückt fungiert mkcert wie Ihre persönliche Certificate Authority (CA), und Ihr Browser behandelt die von ihm erzeugten Zertifikate als gültig, ohne Warnungen, ohne Browser-Tricks, einfach sauberes, vertrauenswürdiges HTTPS für Ihre lokale Entwicklung.

Installation von mkcert auf Linux

Bevor Sie mkcert installieren, müssen Sie sicherstellen, dass die erforderlichen Systembibliotheken verfügbar sind, die mkcert dabei helfen, sich in den Zertifikatspeicher Ihres Systems zu integrieren, insbesondere für die Unterstützung von Firefox (das die NSS-Datenbank verwendet).

sudo apt install libnss3-tools -y        #Debian-based
sudo dnf install nss-tools -y            #RHEL-based 
sudo zypper install mozilla-nss-tools    #OpenSUSE
sudo pacman -S nss                       #Arch

Als Nächstes gibt es zwei Hauptmöglichkeiten, mkcert zu installieren: über den Paketmanager Ihrer Linux-Distribution oder durch manuelles Herunterladen der Binärdatei. Wählen Sie die Methode, die am besten zu Ihrer Einrichtung passt.

Option A: Installiere mkcert über den Paketmanager

 
sudo apt install mkcert        #Debian-based
sudo dnf install mkcert        #RHEL-based
sudo zypper install mkcert     #OpenSUSE
sudo pacman -S mkcert           #Arch

Option B: Manuelle Installation (für andere Distributionen)

Wenn mkcert in den Repositories Ihrer Distribution nicht verfügbar ist oder Sie die neueste Version bevorzugen, können Sie das Binary manuell herunterladen und installieren.

Laden Sie zuerst die neueste mkcert-Binärdatei von GitHub herunter:

wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64

Verschieben Sie es dann in ein Verzeichnis im PATH Ihres Systems und machen Sie es ausführbar:

sudo mv mkcert-v1.4.4-linux-amd64 /usr/local/bin/mkcert
sudo chmod +x /usr/local/bin/mkcert

Überprüfen Sie schließlich die Installation, indem Sie die Version überprüfen:

mkcert --version

Wenn Sie die Versionsnummer sehen, ist mkcert jetzt bereit, auf Ihrem Linux-Rechner verwendet zu werden.

Dem lokalen Zertifikatsanbieter vertrauen

Sobald Sie mkcert installiert haben, besteht der nächste Schritt darin, eine lokale Zertifizierungsstelle (CA) zu erstellen und ihr zu vertrauen, was eine einmalige Einrichtung ist, die sicherstellt, dass jedes Zertifikat, das Sie mit mkcert erzeugen, von Ihrem System und Browser automatisch als vertrauenswürdig angesehen wird.

Um zu beginnen, führen Sie einfach den folgenden Befehl in Ihrem Terminal aus:

mkcert -install

Der obige Befehl erstellt eine neue lokale CA und speichert sie in Ihrem Home-Verzeichnis unter ~/.local/share/mkcert und fügt dann diese CA in den Vertrauensspeicher Ihres Linux-Systems ein, sodass das Betriebssystem alle von ihr ausgestellten Zertifikate als gültig erkennt.

Wenn Sie das libnss3-tools-Paket installiert haben (was Sie tun sollten, wenn Sie Firefox verwenden), wird mkcert das CA auch zur internen Zertifikatdatenbank von Firefox hinzufügen, was bedeutet, dass Firefox Ihren Entwicklungzertifikaten ohne Beanstandungen vertraut.

Wenn der Befehl abgeschlossen ist, sehen Sie eine ähnliche Ausgabe wie diese:

Created a new local CA at "/home/you/.local/share/mkcert"
The local CA is now installed in the system trust store!

Ihr System ist nun so konfiguriert, dass es allen von mkcert erzeugten TLS/SSL-Zertifikaten vertraut, wodurch die üblichen Warnungen des Browsers bei selbstsignierten Zertifikaten entfallen und die Grundlage für sicheres, vertrauenswürdiges HTTPS während der lokalen Entwicklung geschaffen wird.

Erstellen von lokalen Zertifikaten mit mkcert

Jetzt kommt der spaßige Teil, tatsächlich ein lokales SSL-Zertifikat mit mkcert zu erstellen. Angenommen, Sie entwickeln eine Webanwendung und möchten sie über HTTPS unter myapp.local bereitstellen.

Sie können ein Zertifikat für diese Domain generieren, indem Sie einfach den folgenden Befehl ausführen:

mkcert myapp.local

Sobald mkcert ausgeführt wird, werden zwei Dateien in Ihrem aktuellen Verzeichnis erzeugt: myapp.local.pem, das das Zertifikat ist, und myapp.local-key.pem, das der private Schlüssel ist.

Diese Dateien können direkt mit lokalen Webservern wie Nginx, Apache oder sogar leichten Entwicklungsservern wie Pythons http.server verwendet werden, wenn sie so konfiguriert sind, dass SSL unterstützt wird.

Wenn Sie mit komplexeren Entwicklungsumgebungen arbeiten, die mehrere Domains, Subdomains oder sogar localhost-Zugriff beinhalten, ermöglicht Ihnen mkcert, ein Zertifikat zu erstellen, das alle in einem einzigen Befehl abdeckt.

Zum Beispiel:

mkcert myapp.local "*.myapp.local" localhost 127.0.0.1 ::1

Der obige Befehl erzeugt ein Zertifikat, das für myapp.local gültig ist, jede Subdomain wie api.myapp.local sowie localhost und dessen IP-Äquivalente 127.0.0.1 für IPv4 und ::1 für IPv6.

Verwendung von mkcert mit einem lokalen Nginx-Server

Lassen Sie uns ein praktisches Beispiel durchgehen, wie man mkcert verwendet, um eine lokale Webanwendung über HTTPS mit Nginx bereitzustellen. Stellen Sie sich vor, Sie haben einen lokalen Entwicklungsserver, der unter http://localhost:3000 läuft, und Sie möchten sicher auf https://myapp.local zugreifen.

Zuerst müssen Sie die Domain myapp.local auf Ihre lokale Maschine zuordnen. Öffnen Sie die /etc/hosts-Datei mit Ihrem bevorzugten Texteditor.

sudo nano /etc/hosts

und fügen Sie die folgende Zeile hinzu, die Ihrem System sagt, myapp.local auf die lokale Loopback-Schnittstelle aufzulösen.

127.0.0.1 myapp.local

Erstellen Sie als Nächstes ein Entwicklungzertifikat für diese Domain mit mkcert, wodurch zwei Dateien in Ihrem aktuellen Verzeichnis erstellt werden: myapp.local.pem (das Zertifikat) und myapp.local-key.pem (der private Schlüssel).

mkcert myapp.local

Konfigurieren Sie nun Nginx, um diese Zertifikate zu verwenden, indem Sie Ihre Nginx-Konfiguration öffnen (typischerweise zu finden unter /etc/nginx/sites-available/ oder /etc/nginx/conf.d/) und einen Serverblock wie folgt erstellen oder aktualisieren:

server {
    listen 443 ssl;
    server_name myapp.local;

    ssl_certificate /path/to/myapp.local.pem;
    ssl_certificate_key /path/to/myapp.local-key.pem;

    location / {
        proxy_pass http://localhost:3000;
    }
}

Stellen Sie sicher, dass Sie /path/to/ durch den tatsächlichen Pfad zu den vom mkcert erzeugten Zertifikats- und Schlüsseldateien ersetzen.

Sobald die Konfiguration eingerichtet ist, laden Sie Nginx neu oder starten Sie es neu, um die Änderungen anzuwenden:

sudo systemctl restart nginx

Öffnen Sie nun Ihren Browser und besuchen Sie https://myapp.local. Sie sollten Ihre App sicher über HTTPS laufen sehen, ohne Zertifikatswarnungen, genau wie in einer echten Produktionsumgebung.

Sicherheitshinweis

Sicherheitshinweis: mkcert ist ausschließlich für Entwicklungs- und Testzwecke vorgesehen. Von mkcert erstellte Zertifikate sollten niemals in Produktionsumgebungen verwendet werden, da das Tool eine lokale Zertifizierungsstelle (CA) erstellt, die von globalen Systemen oder Browsern nicht anerkannt wird.

Zusätzlich wird der private Schlüssel für diese CA im Klartext auf Ihrem lokalen Rechner gespeichert, was ein Sicherheitsrisiko darstellt, wenn er missbraucht wird. Für jede Produktionsumgebung sollten Sie immer eine vertrauenswürdige Zertifizierungsstelle wie Let’s Encrypt verwenden, um eine ordnungsgemäße Validierung und Sicherheitskonformität zu gewährleisten.

Wie man mkcert deinstalliert und die lokale CA entfernt

Wenn Sie jemals Ihr System bereinigen oder mkcert vollständig entfernen müssen, ist der Vorgang einfach. Zuerst können Sie die lokal installierte Zertifizierungsstelle (CA) entfernen, indem Sie den Befehl ausführen:

mkcert -uninstall

Dieser Befehl löscht das von mkcert erzeugte Root-CA-Zertifikat aus dem Trust Store Ihres Systems sowie aus der NSS-Datenbank von Firefox (falls zutreffend). Er sorgt dafür, dass alle von mkcert signierten Zertifikate von Ihren Browsern oder lokalen Tools nicht mehr als vertrauenswürdig anerkannt werden.

Wenn Sie mkcert manuell installiert haben (zum Beispiel, indem Sie die Binärdatei direkt heruntergeladen haben), sollten Sie die ausführbare Datei auch von Ihrem System entfernen.

sudo rm /usr/local/bin/mkcert

Dies löscht das mkcert-Binary von Ihrem lokalen Rechner. Nachdem Sie beide Befehle ausgeführt haben, werden mkcert und seine CA vollständig von Ihrem System entfernt, ohne dass Rückstände der Vertrauenseinstellungen zurückbleiben.

Fazit

Die Einrichtung von HTTPS für die lokale Entwicklung muss nicht kompliziert sein. Mit mkcert erhalten Entwickler und Systemadministratoren eine schnelle, zuverlässige Möglichkeit, lokal vertrauenswürdige Zertifikate zu erstellen, ohne Warnungen im Browser und ohne sich mit OpenSSL oder komplexen Zertifikatketten herumzuschlagen.