Lokales SSL mit mkcert und Nginx Proxy Manager einrichten

1. Einleitung

Wer lokale Dienste im Heimnetzwerk betreibt, kennt das Problem: Browser warnen vor unsicheren Verbindungen, da keine gültigen HTTPS-Zertifikate vorliegen. Die Lösung ist die Erstellung einer eigenen lokalen Zertifizierungsstelle (CA) mit mkcert.

Ziel dieses Tutorials ist es, vertrauenswürdige SSL-Zertifikate für lokale Domains (z. B. .lan) zu erstellen und diese im Nginx Proxy Manager (NPM) zu hinterlegen.

Voraussetzungen:

  • Installierter Nginx Proxy Manager
  • macOS oder Linux Rechner zur Zertifikatserstellung
  • Zugriff auf die Clients (PC, Smartphone) zur Installation der Root-CA

[BILD 1: Schematische Darstellung: Browser vertraut mkcert CA, welche das NPM Zertifikat signiert hat]

2. Ueberblick

Wir werden eine Root-CA erstellen, daraus Server-Zertifikate generieren und diese auf den Clients als vertrauenswürdig einstufen.

  • Installation von mkcert
  • Erstellung von Wildcard-Zertifikaten
  • Import in Nginx Proxy Manager
  • Verteilung der Root-CA auf Endgeraete

3. Schritt-fuer-Schritt Anleitung

Schritt 1: Vorbereitung und Installation

Zuerst muss mkcert auf dem Arbeitsrechner (hier macOS) installiert werden. Anschliessend wird die lokale Zertifizierungsstelle initialisiert.

# Installation (macOS)
brew install mkcert nss

# Root-CA installieren
mkcert -install

# Pfad zur Root-CA anzeigen (wichtig fuer spaeter)
mkcert -CAROOT

Schritt 2: Zertifikate erstellen

Es empfiehlt sich, ein Arbeitsverzeichnis anzulegen. Wir erstellen hier Zertifikate fuer verschiedene Szenarien. Das Wildcard-Zertifikat ist meist die effizienteste Loesung.

mkdir -p /Users/richard/Desktop/DockerCert
cd /Users/richard/Desktop/DockerCert

# Option A: Einzel-Zertifikat
mkcert nessus.lan

# Option B: Wildcard-Zertifikat (Empfohlen)
mkcert "*.lan"

# Option C: Multi-Domain-Zertifikat
mkcert nessus.lan portainer.lan nextcloud.lan

Der Befehl erzeugt jeweils zwei Dateien: eine .pem Datei (das oeffentliche Zertifikat) und eine -key.pem Datei (der private Schluessel).

Schritt 3: Import in Nginx Proxy Manager

Die erzeugten Dateien muessen nun im Nginx Proxy Manager hinterlegt werden.

  1. Oeffnen Sie das NPM Dashboard.
  2. Navigieren Sie zu SSL Certificates > Add SSL Certificate > Custom.
  3. Geben Sie einen Namen ein (z. B. «Wildcard LAN»).
  4. Certificate: Inhalt der *.pem Datei hochladen oder einfuegen.
  5. Certificate Key: Inhalt der *-key.pem Datei hochladen oder einfuegen.
  6. Speichern.

Schritt 4: Proxy Host konfigurieren

Weisen Sie das neue Zertifikat einem Dienst zu. Beispielhaft fuer den Dienst «Nessus»:

Details Tab:

  • Domain Names: nessus.lan
  • Scheme: https
  • Forward Hostname/IP: 100.97.248.236
  • Forward Port: 8834
  • Block Common Exploits: Aktiv
  • Websockets Support: Aktiv

SSL Tab:

  • SSL Certificate: «Wildcard LAN» auswaehlen
  • Force SSL: Aktiv
  • HTTP/2: Aktiv

[BILD 2: Screenshot der Proxy Host Konfiguration im SSL Tab]

Schritt 5: Root-CA auf Clients verteilen

Damit der Browser dem Zertifikat vertraut, muss die rootCA.pem (siehe Schritt 1) auf jedem Geraet importiert werden.

OS / Browser Aktion
macOS mkcert -install ausfuehren ODER Datei doppelklicken und auf «Immer vertrauen» setzen.
Windows Datei in rootCA.crt umbenennen > Importieren in «Vertrauenswuerdige Stammzertifizierungsstellen».
iOS / iPadOS Per AirDrop/Mail senden > Einstellungen > Profil laden > Allgemein > Info > Zertifikatsvertrauenseinstellungen > Volles Vertrauen aktivieren.
Android Einstellungen > Sicherheit > Verschluesselung & Anmeldedaten > Zertifikat installieren > CA-Zertifikat.
Firefox Einstellungen > Datenschutz > Zertifikate anzeigen > Importieren.

Schritt 6: Erneuerung der Zertifikate

Lokale Zertifikate haben eine begrenzte Laufzeit. Zur Erneuerung ueberschreiben Sie einfach die alten Dateien. NPM uebernimmt diese automatisch (kein Neustart notwendig).

mkcert -cert-file nessus.lan.pem -key-file nessus.lan-key.pem nessus.lan

4. Wichtige Hinweise & Stolperfallen

DNS Auflösung: Stellen Sie sicher, dass die Domain nessus.lan auch wirklich auf die IP des Nginx Proxy Managers zeigt (via Pi-hole, AdGuard Home oder Hosts-Datei).

Sicherheit: Geben Sie den privaten Schluessel der Root-CA (rootCA-key.pem) niemals weiter. Wer diesen besitzt, kann fuer jede beliebige Website vertrauenswuerdige Zertifikate fuer Ihr Netzwerk erstellen.

5. Ergebnis & Fazit

Nach erfolgreicher Einrichtung und Verteilung der Root-CA zeigt der Browser beim Aufruf von https://nessus.lan ein geschlossenes Schlosssymbol. Warnmeldungen gehoeren der Vergangenheit an.

Als naechsten Schritt koennen Sie diesen Prozess mittels Cronjobs automatisieren, um ablaufende Zertifikate automatisch zu erneuern.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert