Mai 02, 2024 Good to know

SSL-Zertifikate für lokale Dienste

Jeder, der schon einmal einen Self-hosted Server betrieben hat, kennt das Problem: SSL-Zertifikate. Normalerweise gehört das zum guten Ton im Internet seine Verbindungen mit einem Zertifikat zu verschlüsseln. Aber im Homenetzwerk? Da ist es nicht so einfach möglich. Muss man sich dann mit den nervigen Zertifikatsmeldungen zufriedengeben?

Die Antwort ist Nein! Es gibt eine Lösung! Die Lösung heißt Let’s Encrypt DNS-01 Challenge. Darüber ist es uns möglich, lokale Dienste – ohne Ports freigeben zu müssen – mit einem gültigen SIL-Zertifikat zu schützen!

Reverse Proxy: Nginx Proxy Manager

Ein Reverse Proxy kann man sich wie ein Fluglotse vorstellen. Hingegen zeigt der Reverse Proxy nicht den Fliegern, wohin sie gehen müssen, sondern leitet den Nutzer auf Basis dessen Domain an den richtigen Service weiter.

Die DNS Verwaltung

Bei dieser Methode funktioniert die Zertifizierung unter anderem über die DNS Verwaltung Deiner Domain. Das heißt: Du benötigst eine registrierte Domain. Das kostet nicht viel; wenige Euros pro Jahr.

Meine Domain habe ich bei Keliweb registriert. Dort bezahle ich pro Jahr für meine Domain 10,- € und kann alle Funktionalitäten nutzen.

Für die Verwaltung nutze ich deSEC, einen kostenlosen und gemeinfinanzierten DNS Hoster. Als Erstes erstellen wir einen Wildcard A-Record, welcher auf die lokale IP-Adresse unseres Nginx Proxy Managers zeigt. Klingt komisch, ist aber so! Wir geben eine lokale Adresse in der DNS Verwaltung an. So tricksen wir die Namensauflösung aus und leiten uns zum Reverse Proxy weiter.

Jetzt ist das schlimmste gemacht! Den Rest übernimmt netterweise NPM. Damit NPM aber auf unsere Records zugreifen kann, um danach die Domain mit einem SSL-Zertifikat zu schützen, müssen wir einen Token erstellen. Über diesen API-Schlüssel greift dann NPM zu, um die Einstellungen vorzunehmen.

Bei deSEC erstelle ich hier einen API-Key: https://desec.io/token. Klicke auf das + und vergebe den Token einen Namen.

 

Kopiere Dir den Key, wir brauchen ihn gleich wieder.

Zurück im Nginx Proxy Manager

Im Proxy Manager angekommen gehe auf „SSL Certificates“–> „Add SSL Certificate“ –> „Let’s Encrypt“.

Beim Domain Name schreibe Deine hinterlegte Adresse als Wildcard Domain hinein. Das sieht z. B. so aus:

*.lan.example.com
*.test.com

Wenn das geschafft ist, muss nur noch Let’s Encrypt das Zertifikat ausstellen. Das ist nichts Kompliziertes und geht mit einigen Klicks.

Aktiviere dazu die „DNS Challenge“. Wähle beim DNS Provider Deinen aus. Ich wähle hier für meinen Fall deSEC aus.
Je nach Anbieter kann der nächste Schritt variieren. Was aber sicher bei jedem zu machen ist: das Verifizieren! Bei deSEC funktioniert das alles über den vorhin erstellten Token.

Beim Feld: „Credentials File Content“ gebe bei YOUR_DESEC_API_TOKEN den vorhin erstellten Token an.

Klicke nur noch auf save! Es dauert ein Moment, bis das gültige Zertifikat bei der Verifizierungsstelle erstellt wird. Aber normalerweise nach einigen Sekunden sollte alles klappen!

Und dann hast Du ein gültiges Wildcard SSL Zertifikat für diese Domain! 😉

Verwendung

Nun – wenn Du ein gültiges Zertifikat hast – kannst Du Deine Applikationen im Netz darüber schützen. Das geht dank NPM ganz einfach. Wähle beim Erstellen unter SSL das generierte Zertifikat aus.

Hier ein Beispiel einer App in meinem LAN:

Es funktioniert! Ein valide und vor allem sichere Verbindung zu einer Application in meinem lokalen Netzwerk.

Schreibe einen Kommentar

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