Nginx Proxy Manager lokale Zertifikate?
Ich benutze Docker auf meinem Pi. Als Docker laufen Pi-Hole, Nignx Proxy Manager und weitere. Wenn ich über eine Subdomain auf einen anderen Docker zugreifen will z.B. wireguard.xxxxx.de wird von Nignx ein Zertifikat benutzt. Im Pi-Hole kann man einen DNS Record einstellen. Trage ich dort z.B. wireguard.xxxxx.de auf IP 192.168.5.36 weiterleiten ein, steht oben in der Adressleiste trotzdem wireguard.xxxxx.de. Aber es wird kein Zertifikat benutzt. Warum ist mir bekannt, aber kann ich irgendwie ein Zertifikat für einen Lokalen zugriff erstellen.
1 Antwort
aber kann ich irgendwie ein Zertifikat für einen Lokalen zugriff erstellen
Ja, wenn du die Domain besitzt und im NPM die Überprüfung per DNS erledigst, kannst du auch für lokale Subdomains Zertifikate erstellen
Beispiel:
Ich habe eine Domain, hier nenn ich sie jetzt einfach mal example.com - diese verwalte ich über Cloudflare.
Ich nutze Unbound als DNS-Dienst und habe dort z.B. als DNS-Override für die Subdomains "nginx.int.example.com" und "portainer.int.example.com die lokale IP 192.168.42.30 angegeben. Wenn also eines meiner Geräte im lokalen Netzwerk über meinen DNS-Server nginx.int.example.com oder portainer.int.example.com anfragt, wird eben 192.168.42.30 geantwortet. Auf 192.168.42.30 läuft - wie die Namen der Subsubdomains schon vermuten lässt - einmal Nginx (Proxy Manager) und einmal Portainer.
In NPM habe ich jetzt ein SSL-Zertifikat über Let's Encrypt angelegt - man kann bei dem folgenden Menü auswählen, dass dort die DNS-Challenge gewählt werden soll.
Je nach Anbieter (in meinem Fall Cloudflare) musst du eben die geforderten Angaben machen (in meinem Fall ein API-Key für die Zone example.com).
Oben unter "Domain Names" kommen dann alle Domains und Subdomains rein, für die das Zertifikat zählen soll. Ich habe in meinem Fall z.B. angegeben, dass es für example.com, *.example.com und *.int.example.com gelten soll - die Sterne sind jeweils Wildcards und lassen alles zu.
Dadurch ist jetzt dieses Zertifikat für z.B. example.com, a.example.com, b.example.com, c.int.example.com, d.int.example.com usw gültig, aber nicht für a.ext.example.com.
Für die einzelnen Einträge, die der NPM dann verwaltet, wähle ich dann das gerade erstellte Zertifikat aus und lasse das intern an die korrekte Quelle weiterleiten.
Beim Aufruf lässt sich dann leicht überprüfen, dass das Zertifikat tatsächlich gültig ist und von Let's Encrypt verifiziert wurde:
Zudem lässt sich auch leicht überprüfen, dass hinter "nginx.int.example.com" tatsächlich die IP-Adresse 192.168.42.30 steckt. Unter Windows kann man das Tool "nslookup" im Terminal nutzen, unter Linux dig. Beide geben für den lokalen DNS die Antwort 192.168.42.30, aber bei der Nutzung des externen DNS-Servers (z.B. 1.1.1.1) gibt es keine Antwort, da die Einträge ja nur lokal im Netzwerk angegeben sind.




Ich nehme an das dass nicht geht wenn die Domain bei Strato liegt oder?