https Verbindungen auf Container im eigenen Netzwerk

Fraggle

New member
Hallo zusammen,
ich habe in meinem Netzwerk einige docker-Container laufen. Damit es "schöner" aussieht, habe ich den nginx proxy manager eingerichtet. Es sieht also folgendermaßen aus:
Docker ist auf einem ubuntu Server installirt und es gibt einige ontainer, zB. Bitwarden. Diesen Container kann ich nun im Browser mit "http://bitwarden" aufrufen. Jetzt würde ich aber gerne nicht http sondern https verwenden. wie wäre hier das beste vorgehen?
Bitwarden ist hier nur ein beispiel, habe noch andere Container :).
Viele grüße,
Max
 

blurrrr

Well-known member
Hi,

via NPM läuft das im Prinzip wie folgt:

Client <-> NPM <-> Ziel

Derzeit sieht es vermutlich so bei Dir aus:

Client <-http-> NPM <-http-> Ziel

Der NPM in seiner Rolle als Reverse-Proxy kann für Dich die SSL-Terminierung übernehmen, das würde dann so aussehen:

Client <-httpS-> NPM <-http-> Ziel

Ich nutze den NPM zwar nicht, aber laut Screenshots im Netz gibt es dort einen Reiter "SSL Certificates". Da gibt es nun generell 2 Möglichkeiten: Du generierst Dir ein selbst-signiertes Zertifikat (was für rein interne Dinge ausreichend wäre, aber eine Warnung bei Aufruf bringen wird (da selbst-signiert)), oder Du hast die Dinge von aussen erreichbar (z.B. https://bitwarden.deinedomain.tld), dann wäre der Weg über Zertifikate von Lets Encrypt angesagt (da gibt es kostenlose offiziell beglaubigte Zertifikate und somit auch keine Warnung bei Aufruf).

Ich persönlich nutze rein intern immer nur selbst-signierte Zertifikate (muss man halt mal kurz bestätigen, nicht weiter wild (wie ich finde)). Bei öffentlich erreichbaren Dingen sind es Lets-Encrypt-Zertifikate und/oder gekaufte.
 

Barungar

Well-known member
Es stimmt übrigens nicht, dass selbst-signierte Zertifikate immer eine Warnung bringen. Die Warnung kommt im übrigen auch nur, weil der Client die Zertifizierungskette nicht verifzizieren kann. Man muss lediglich dem Client auch das (eigene) Root-CA bekannt machen, dann akzeptiert er auch ohne Warnungen / Ausnahmen, die eigenen Zertifikate.

Anders klappt das bei "normalen" Zertifikaten auch nicht, außer das die meisten Betriebsysteme der Clients einfach die bekannten Root-CAs alle schon seit Auslieferung kennen.
 

Fraggle

New member
Ok, das klingt schonmal sehr gut. Danke schonmal. Das erstellen der Zertifikate mache ich via openssl für jede domain(wie hier beschrieben: https://praxistipps.chip.de/openssl-zertifikat-erstellen-so-gehts_46492)? Die erstellten Zertifikate speichere ich dann auf meinem PC und lade sie im NPM hoch?
Also zertifikat für "bitwarden", das hinterlege ich dann bei der domain bitwarden.
hab das bisher noch nie gemacht und deswegen etwas unsicher :)
 

blurrrr

Well-known member
Man muss lediglich dem Client auch das (eigene) Root-CA bekannt machen, dann akzeptiert er auch ohne Warnungen / Ausnahmen, die eigenen Zertifikate.
Erstmal "langsam" machen, Zertifikate kann man dann noch immer in den jeweiligen Zertifikatsspeicher importieren ☺️ Wenn es sowas gibt - keine Ahnung - könnte man sich sicherlich auch via Docker eine eigene CA hinsetzen und darüber die Zertifikate generieren, so dass nur noch das CA-Zertifikat importiert werden muss. Allerdings ist das ja auch kein unerheblicher Aufwand (vor allem, wenn man nicht sonderlich bewandert ist in solchen Dingen).

Hab grade mal nachgeschaut... bevor man sich jetzt als Anfänger eine dieser "großen" Lösungen antut... TinyCA war unter Linux-Desktop-Systemen immer ganz beliebt, gibt es mittlerweile auch via Docker (https://hub.docker.com/r/acaranta/docker-tinyca). Unter Windows gibt es auch vergleichbares, wie z.B. XCA.

Frage ist halt, ob man sich den Rattenschwanz jetzt geben möchte, oder es einfach hält 🙃
 

Fraggle

New member
naja, also einfach gefällt mir, Es ist ja nicht so, dass es jetzt sehr viele dienste wären, für ein Zertifikat erstellt werden müsste. eine Quick&Dirty Lösung wäre schon angenehm. Mit XCA erhalte ich allerdings kein *.key File, welches ich für NPM benötige. TinyCA muss ich erst noch deployen als Container. weiß aber nicht ob das mit Kanonen auf Spatzen geschossen ist...
 

blurrrr

Well-known member
Naja, kannst halt einfach so die Zertifikate generieren, mit der Meldung leben (so mache ich das) und ggf. die Zertifikate jeweils in den vertrauenswürdigen Clientzertifikatsspeicher importieren, oder Du signierst die Zertifikate mit einem CA-Zertifikat und vertraust diesem (auch wieder in den Zertifikatsspeicher der jeweiligen Clients importieren), dann wird automatisch allen Zertifikaten vertraut, welche diese Zertifizierungsstelle beglaubigt hat. Kann man halt handhaben, wie man lustig ist 🙃

EDIT: Habe grade gesehen, dass es von XCA auch eine portable Version gibt... das wäre dann vllt ein gangbarer Weg :) Einmalig das CA-Zertifikat erstellen, damit dann die neuen Zertifikate signieren, die musst Du dann ja eh manuell zum NPM schubsen. CA-Zertifikat musst Du dann nur an die Clients verteilen.
 

Howcountry

New member
Ich Habe NPM schon länger, wie Du als Docker Container, laufen und nutze NPM selbst um für alle Domain/Subdomains Lets Encrypt Zertifikate zu holen und auch automatisch zu Updaten, das Geht mit NPM extrem einfach.NPM ssl.png
 

Zurzeit aktive Besucher

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
1.334
Beiträge
17.780
Mitglieder
844
Neuestes Mitglied
d4rkw4rden
Oben