HA im lokalen Netz mit Lets-Encrypt Zertifikaten - bunter Blumenstrauß an Verständnisfragen

Hallo zusammen,

liebe Menschen die mehr Plan von Netzwerk und Zertifikat als ich haben (was nicht schwer ist… :wink: )

Ich nutze HomeAssistant komplett lokal, ohne Zugriff von außen (bzw. bei Bedarf über RouterVPN). Das soll auch so bleiben.
Jetzt stoße ich aber immer wieder häufiger auf Probleme mit (fehlenden) Zertifikaten, und will das ändern.
Zu den konkreten Fragen siehe unten :smiley:

Hier vorab kurz mein Setup und Ansatz:
Ich habe zwei Rpi mit HomeAssistant OS, die abwechseln Livesystem sind (auf dem jeweils anderen werden regelmäßig Backups vom Live restored, ich nutze ihn als Spare oder für Tests).
In der FritzBox habe ich als DNS Server die beiden IPs der RPis angegeben, und AdGuard Home filtert. Für alle Clients im Netzwerk, außer HomeAssistant, sind die Ports 53 und 853 gesperrt (damit zuverlässig alles über AdGuard geht).

Im Moment scheint mir am besten, wenn ich:

  • zwei Subdomains über meine Domain (DNS Challenge soll bei Netcup gehen) für die beiden RPi einrichte
  • Let’s Encrypt Zertifikate für diese erstellen/automatisch erneuern lasse
  • In AdGuard Home Rewrites für diese Subdomains mache, die auf die internen IPs zeigen

Fragen & Knoten im Kopf hab ich noch ein paar, und hoffe dass ihr mir dabei helfen könnt:

  • Sind meine HomeAssistants zusätzlich weiterhin unter ungesicherten Adressen (z.B. http://192.111.222.33:8123) erreichbar?
  • Wie erreiche ich meine HomeAssistants, wenn AdGuard/HA die Grätsche macht, und ich der FritzBox den DNS-Server auf Default setzen muss? Passiert leider 1-2x im Jahr.
    Die Subdomains werden ja dann nicht mehr von AdGuard umgeschrieben. Gerade in so Fällen brauch ich aber noch Zugriff auf HomeAssistant. Soweit ich weiß, kann ich keine Rewrites in der FritzBox einrichten. Oder?
  • Sollten die Zertifikate irgendwann aus irgendwelchen Gründen ablaufen/ungültig werden, kann ich ja bei jedem Gerät weiterhin “auf eigenes Risiko” trotzdem aufrufen, oder?
  • Das Zertifikat gilt dann auch für die anderen Addons die über HA laufen und n eigenen Port haben (z.B. InfluxDB, Mosquitto, Nextcloud,…), bzw. die greifen auf das eine zu? Oder müsste ich das dann bei jedem Addon händisch vierteljährlich irgendwie erneuern?

Bonusfragen:

  • Vielleicht bin ich ja auch ganz auf dem Holzweg. Würdet ihr mir was, für meinen Fall sinnvolleres empfehlen?
  • Wenn ich Live und Dev-System tauschen muss, muss ich derzeit an vielen Stellen die Adresse ändern (Alle Tasmota/MQTT Geräte, Companion-Apps, NAS-Backup-Jobs, SambaServer). Kann ich das in dem Zuge vielleicht eleganter machen, dass ich künftig nur noch an einer/weniger Stellen die Adresse ändern muss?

Hoffe jemand kann mir mit den offenen Fragen helfen, oder hat sogar ne noch einfacherere Lösung als das was ich mir bisher zusammengegoogelt habe!
Danke euch und viele Grüße!

Nein. Über https:// ja, unverschlüsselt nein.

Ja, natürlich. Wie bei anderen Zertifikaten auch. Let’s Encrypt Zertifikate laufen drei Monate. Die kannst aber per Automation regelmäßig erneuern lassen und solltest in der Hinsicht kein Problem haben.

Ich verstehe Deinen Ansatz Subdomains zuzuweisen und dann intern wieder umzubiegen nicht.

Bei mir z.B. läuft Home Assistant unter der Domain ha.hates.social. Habe den Port auf 443 geändert und kann daher einfach über https://ha.hates.social Home Assistant aufrufen. Auch von unterwegs, da ich per Wireguard onDemand in mein Netzwerk verbunden bin.
Die dabei hinterlegte IP ist 172.23.107.2 - somit ist kein umbiegen irgendeiner Form notwendig.

Wieso legst Du Dir also nicht z.B. main.domain.tld und backup.domain.tld an und verweist direkt auf die jeweilige, interne IP? Und wenn Du die Geräte tauschst, weißt Du einfach per DHCP dem jeweils anderen Gerät die Main oder Backup IP zu, änderst in Let’s Encrypt die Domain, lässt es durchlaufen und hast in unter fünf Minuten das Ganze geändert, musst aber an Deinen Einstellungen nichts ändern, weil Du auf main.domain.tld verweisen kannst, statt die IP zu nutzen, wobei auch das ginge.

NetCup sollte funktionieren. Let's Encrypt Zertifikat für private IP kennst Du, richtig?

1 „Gefällt mir“

Richtig, man kann bei diversen DNS-Providern (DuckDNS, Cloudflare) interne IP-Adressen auf deine Domains vergeben.
Ich habe mir z.B. bei Cloudflare irgendeine Domain gekauft und dann einfach SubDomains angelegt und die IP-Adressen hinterlegt.

Dann ein Wildcart-Zertifikat mit Let‘s Encrypt erstellt. Dann kannst du deine internen Server alle über https mit den entsprechenden Domains aufrufen.

Das SSL Zertifikat muss natürlich auf deinen internen Servern eingespielt werden.

Wurde hier sehr ausführlich beschrieben: Let's Encrypt Zertifikat für private IP

1 „Gefällt mir“

Wow, das klingt ja alles sehr gut! :+1:
Macht Hoffnung, dass es doch keine Raketenwissenschaft ist :smiley:

Wenn ich das, was du später gesagt hast, richtig verstanden habe, ist das ja aber auch kein großes Ding, denn worst case muss ich das ungültiges Zertifkat bestätigen und dann kanns weitergehen.
Und wenn ich mir das umbiegen des DNS sparen kann, kann da ja auch nix verrutschen:

Ehrlich gesagt ich auch nicht :laughing: Ich hab das tatsächlich ein paar Mal gelesen während der Recherche, und meine gelesen zu haben dass das muss. Wegen mhmm… DNS Rebind? Kann das sein? DNS rebinding - Wikipedia Wobei, ich glaube in der Fritzbox darf man dann dafür auch ausnahmen definieren. Passt also?

Wenn das so passt - super! :star_struck:

Eine Anschlussfrage hätt ich dann dazu:
Ich fahre ja derzeit sehr gut damit, Backups munter zwischen den Geräten zu tauschen. Ist es möglich, mit dem Let’s Encrypt Addon zwei Zertifikate zu erstellen/erneuern? Sozusagen zwei fullchain.pem/privkey.pem zu generieren, und in configuration.yaml beide Sätze anzugeben? Da fehlt mir einfach mangels Praxis ne Idee ob das klappen würde.

Das klingt traumhaft! :star_struck:

Let’s Encrypt Addon generell ja, deinen arg geilen aufgeräumten Post noch nicht - das check ich gleich nochmal in Ruhe durch!

Um nicht alle 3 Monate erneuern und händisch umziehen zu müssen, werd ich wohl die Lets Encrypt-Addon Variante nehmen. Gut zu wissen dass das geht. Hoffentlich auch bei meinem Hosting. Check ich gleich mal!

Danke euch! Das sind ja wirklich arg Hoffnung schürende Posts! Habs bisher nicht wirklich zwingend gebraucht und den Aufwand gescheut, aber das liest sich doch alles machbar. Vor allem wenn es klappen sollte, das Addon 2x, für beide Subdomains, automatisch durchlaufen zu lassen :slight_smile:

Ja. Aber wieso? Es ist doch gar nicht notwendig, wenn Du im DNS die private IP Adresse hinterlegst. :wink:

Du kannst auch mehrere Domains angeben, ja. Es sollte also (vermutlich) kein Problem sein, wenn Du beide Domains auf beiden Geräten angibst und entsprechend die Zertifikate erstellen lässt.

Würde da nicht groß hin und her kopieren.

Ja. NetCup wird unterstützt. Hatte vorhin mal geschaut.

Würde es also so machen, dass Du im DNS die privaten IP Adressen hinterlegst. Im Let‘s Encrypt Addon würde ich auch einfach beide Domains angeben und für beide, auf beiden Geräten, ein Zertifikat erstellen lassen. (Denke, dass es gehen müsste, weil er ja die DNS Einträge prüft.)

Und dann dem jeweiligen Haupt Gerät (per DHCP) die Haupt-IP zuweisen und einmal neu starten.

Dann dürfte es keine Probleme geben, denke ich.

Das Addon lasse ich per Automation inzwischen einmal die Woche starten. Entweder es kann was erneuern oder es beendet sich innerhalb von 1 - 2 Sekunden.

1 „Gefällt mir“

Hach Freunde, das liest sich wirklich außerordentlich gut! Ich freu mich schon fast drauf das ma zu machen dann!
Danke euch sehr für die tollen Tipps + Infos! :partying_face::+1:

Gute Nachricht: Es funktioniert zu 60 Prozent! :slight_smile:
Schlechte Nachricht: Es fehlen noch 40 Prozent :frowning:
Könnt ihr mir vielleicht doch nochmal weiterhelfen in die Zielgerade zu krabbeln?

Ich habe Subdomains als A Record auf die internen IPs gesetzt, und erfolgreich Zertifikate erstellt.
Das Testsystem kann ich, wenn ich mich im Heimnetz befinde, unter https://subdomain.domain.de:8123 erreichen.

  1. Port ist weiterhin nötig:
    Wieso muss ich weiterhin den Port :8123 angeben, wie kann ich das ändern?
    In HomeAssistant habe ich unter Network->Local network https://subdomain.domain.de:8123 angegeben, der Schalter Automatic ist aus.

Mhmm… da brauch ich dann auch mal Starthilfe :frowning:

  1. Von außerhalb, über AVM "Heimnetz-"VPN kein Zugriff mehr:
    Die o.g. Adresse ist nicht mehr erreichbar. Auch über keine oder andere Port nicht.
  • Wenn ich im Heimnetz bin, und vom Handy ne Traceroute zu subdomain.domain.de mache, lösts direkt zur IP auf (192.123.456.78)
  • Mit 5G und Heimnetz-VPN an, gibts n DNS error
    Ich nutze gezwungenermaßen die AVM MyFritz App für VPN - da wird aber nicht vollständig getunnelt, aber aufs Heimnetz kann zugegriffen werden. Funktioniert beim noch unangetasteten Livesystem. Zum testen hab ich jetzt mal ne App installiert, die komplett über IPSec IKEv1 tunnelt, aber gleiches Ergebnis.

Ich hab für beide Probleme leider gar keinen Plan wo ich überhaupt ansetzen könnte :frowning:
Um Fehlerquellen auszuschließen, habe ich jetzt mal in meiner Fritzbox DNS Server / NS im Heimnetz auf die Standardwerte gestellt, um Fehler in AdGuard, der ja auf dem Livesystem noch läuft, auszuschließen. Joa, wo ich noch suchen, geschweige denn finden, könnte, hab ich keinen Schimmer…
Edit: Weird, mit dem Handy im Heimnetz kann ich https://subdomain.domain.de:8123 nicht öffnen, wenn die Fritzbox den NS macht. Mit dem PC machts keinen Unterschied. Wenn ich die IP meines aktuellen Main-Sys angebe, dann funktionierts auch am Handy im Heimnetz. In allen Fällen lasse ich den DNS-Server in der Fritzbox auf intern (Standardwerte) gestellt.

Vielleicht fällt euch ja auf und ein, was das Problem/die Probleme sein könnte?

Weil Port 8123 weiterhin der verwendete Port ist. :wink:

http:
  server_port: 443
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

ist mein Eintrag in der configuration.yaml, um den Port von 8213 auf 443 umzustellen, welcher bei https:// standardmäßig vom Browser verwendet wird. Nach einem Neustart sollte es damit dann ohne Port Angabe klappen.

Wie alt sind die DNS Einträge? Wenige Minuten / Stunden? Dann würde ich davon ausgehen, dass sich einfach noch nicht alle DNS Server aktualisiert haben. :wink:

Wie jetzt - soll ich jetzt auch noch Dokumentationen lesen? :face_with_monocle: :laughing:
Achherrje, das is mir unangenehm, hab ich wohl überlesen… Ja super, passt! :+1:

Mittlerweile ~24 Stunden. Da müsst sich das ja schon rumgesprochen haben…?

Wenn ich einfach aus dem Handynetz, ohne irgendein VPN an, n DNS Lookup mache, krieg ich die Ausgabe “Submitted Queries 38, records received 0”.

Und, im Heimnetz funktioniert es ja - allerdings auch nur, wenn ich im Router den NS auf meinen DNS-Server (AdGuard Home aufm Produktiv-System) stelle. Wobei ich da keine Rewrites oder so gesetzt habe. Wenn ichs der Box, DNS Server auf .1 überlasse kommt da auch nix.

Die Subdomain hab ich wirklich nur über A-Record auf die entsprechende (interne) IP gesetzt. Nix weiter. Fehlt da noch was?

Aber ich steh da wirklich wie der Ochs’ vorm Berg, und weiß gar nicht wie ichs wirklich enger einkreisen soll…

Magst evtl. die (Sub-)Domain nennen oder mir per PM schicken? Läuft ja eh auf eine private IP Adresse… Dann schaue ich mal, ob der Eintrag passt.

Wobei… Kannst Du auch selbst… Bei DNS Checker - DNS Check Propagation Tool Deine Sub-Domain eintragen und schauen welche IP angezeigt wird.
Beispielhaft wäre hier ha.hates.social (DNS Checker - DNS Check Propagation Tool) und die private IP 172.23.107.2 als Ergebnis.

Wahlweise kannst Du auch nen Lookup über z.B. DNS Lookup Tool - DNS Tools - MxToolbox machen. (Ergebnis für ha.hates.social)

Ein A-Entry sollte reichen. Du wirst intern kein IPv6 nutzen, oder?

Bin halt nicht sicher wie viel Zeit sich die Fritz!Box lässt, um bereits bekannte Domains mal zu aktualisieren bzw. wie langsam der genutzte DNS-Server ist…

1 „Gefällt mir“

Ich hatte anfangs auch Probleme mit dem DNS der FRITZ!Box. Die Box hat einfach die Auflösung nicht aktualisiert. Man kann leider nicht einfach den DNS Cache auf der FRITZ!Box löschen. Nur indem man DHCP aus- und wieder anschaltet. Hat bei mir nicht richtig funktioniert. Eventuell klappt es schon morgen.
Hast du auf deinem Handy ein DNS Tool? Z.b Net Analyser, dann kannst du die DNS Auflösung direkt testen.

2 „Gefällt mir“

Ach Leute ihr seid einfach großartig!

Das wars bzw. das isses. Wenn ich mich mit der Box über VPN verbinde, ist der DNS-Server die 192.168.178.1. Obwohl ich den in der Fritzbox (für Internet und Heimnetz) seit Monaten auf was anderes gesetzt hab :angry:
Ohmann…

Ja, bei mir funktionierts auch immer noch nicht, trotz DHCP aus-an und Neustart :frowning:
Hab ich dich richtig verstanden, dass sich das irgendwann, wenn sich die Box mal bequemt, dann legt?

Schade, das will ich erst noch lösen bevor ich mein Produktivsystem auch auf SSL umstelle… Trotzdem würde ich sagen - Problem gelöst, grundsätzlich funktioniert es ja! :+1: Schwierig die ‘Lösung’ zu markieren, war ja alles irgendwie n Teil davon :slight_smile:

Danke euch beiden, für die ganzen guten Tipps und Händchenhalten, das war ne großartige Hilfe!!

Du hast zwei Möglichkeiten DNS Server in der Fritz!Box einzustellen. Einmal die DNS Server, die per DHCP an die Clients verteilt werden. Einmal die DNS Server, welche die Fritz!Box selber nutzt, wenn diese Adressen auflösen muss. Hast Du beide geändert?

Du nutzt Wireguard, oder? Wieso legst Du dann für diese Verbindung in Deiner Config nicht fest, dass ein anderer DNS Server verwendet werden soll? Habe ich für meine VPN Verbindungen auch überall getan.

DNS = 192.168.XXX im Bereich [Interface] in der Wireguard Config. Auf der mobilen App eben im Punkt DNS Server.

1 „Gefällt mir“

Ja, die sind beide geändert. Ich hab leider

kein Wireguard :frowning: sondern muss mir mit der Fritzapp behelfen.
AVM hat mich sehr entäuscht, dass ich auf die Fritzbox 7580 gesetzt habe (Business Flagschiff, Leute!), und die im Gegensatz zu älterer Hardware bei Firmware 7.5x nicht mehr berücksichtigt wurde.
Nur wegen fehlendem Wireguard Elektroschrott zu machen machen und neue Hardware kaufen (diesmal dann kein AVM mehr, Lektion gelernt) sehe ich nicht ein.
Deswegen muss ich mir mit der FritzApp behelfen. Oder n anderen Client, IPSec IKEv1 finden. Oder doch irgendwann n eigenen VPN Server aufsetzen…

Dank dir sehr für deine super Unterstützung! :sunglasses: :+1:

Die FRITZ!Box soll im Consumer Bereich eben alles können. Und dabei bleibt dann viel auf der Strecke, wenn man etwas höhere Ansprüche hat.

Ich habe hier eine stehen, die ausschließlich als Modem im Bridge Mode fungiert und nicht mehr tut als an meinen Router die Internetverbindung weiter zu reichen. :wink:

Home Assistant müsste Wireguard als Addon unterstützen. Port Forwarding in der FRITZ!Box und die Probleme könnten gelöst sein.

1 „Gefällt mir“

Moin,

die Box ist von 2016, 2017, 2018?
Das ist für ein Stück Hardware, schon ein ganz schönes Alter, dass da dann nicht immer alle Funktionen nachgerüstet werden kann ich schon verstehen.

Du kannst ja mal über diese Dinge nachdenken :slight_smile:

  1. versuche die Box zu verkaufen und investiere in eine neue, muss ja nicht wieder AVM sein.
  2. ich habe die Box von meinem Provider geleast, die tausche ich alle Jahre aus.
  3. es gibt das Projekt OpenWRT, einfach mal schauen, ob die Box kompatible ist und ob es Wireguard für openWRT gibt, dann abschätzen, ob man es damit versucht.
  4. das was @tarag vorgeschlagen hat :slight_smile:

VG
Bernd

2 „Gefällt mir“

Fair enough, stimme zu. Tatsächlich wurde aber sogar noch die 11 Jahre alte 7490 und deutlich langsamere Hardware aktualisiert. Das kann ich dann nicht verstehen…

Danke für die Anstöße! Denke schon seit einigen Monaten über diese Dinge nach. Vielleicht ist ja jetzt die Zeit dafür gekommen. Mein Router davor lief auf DD-WRT. Müsste ich mal schauen was sich da in der Zwischenzeit getan hat. Vielleicht gibts aber auch weiter Flickenteppich und

Verlängert mein Elend :wink: Es gibt wohl auch eine (aber auch nur eine!) Android-App, die das olle IPSec Ikev1 beherrscht. Ich schau mal…