Home Assistant intern mit Zertifikat absichern

Hey Kollegen,

das Thema kam schon mal ähnlich auf, aber eine gescheite Lösung war für mich irgendwie nicht dabei…

momentan betreibe ich HA OS auf einem Pi für Testzwecke. Darauf habe ich ein selbst signiertes Zertifiakt erstellt und es funktioniert auch soweit über den Browser, jedoch nicht über die Home Assistant App. Diese möchte höchstwahrscheinlich ein gültiges Zertifkat.

Welche Möglichkeiten habe ich denn um im LAN HTTPS für Home Assistant zu erstellen? Ich habe einige Optionen gelesen, aber keine, die mir gefällt.

  1. Nginx und Let’s encrypt

Ich habe sogar eine VM mit nginx und let’s encrypt aufgebaut und es funktioniert für meine Domain mit Portainer, trilium, authelia etc., aber dies war alles nur zum testen → die VM ist quasi immer aus. Ich traue mir einfach nicht zu, einen Port als nicht mal “halbprofi” zu öffnen.

  1. Tailscale funnel / Cloudeflare tunnel

Traffic kommt vom Internet, geht über Tailscale-Server/Cloudflare Server, dann zu mir → Nein danke

  1. Selbstsigniertes Zertifikat

Einfach für Browser, aber für APP nicht möglich

  1. Selbstsigniertes Zertifikat mittels CA-Zertifikat

Irgendwie wird das Server Zertifikat von einem Root Zertifikat signiert, dann das Root Zertifikat auf die Clients importiert. Das wäre noch interessant, müsste ich mich aber erstmal einarbeiten. Hört sich auch umständlich, das Zertifikat auf ein Smartphone zu bringen etc.

  1. Kein Zertifikat - im Lan “unnötig”

Hört sich aber irgendwie falsch an.

  1. Nabu Casa

Wäre auch nur für externen Einsatz, so viel ich weiß.

Ich bin an keiner Bastellösung interessiert, wo ich mich Stunden reinarbeiten muss. Es muss doch einen “einfachen Weg” geben?

(Beitrag vom Verfasser gelöscht)

Da bei uns zu Hause alles lokal und via Wireguard VPN läuft, habe ich es über eine eigene Domain, Nginx Proxy Manager und Adguard Home umgesetzt.

Einfach gesagt: Nginx Proxy Manager holt sich per Lets Encrypt via DNS ein Zertifikat von der Domian. Vorteil, man muss keine Ports dafür im Router öffnen, verteilt das auf diverse lokale Subdomains und Adguard Home kümmert sich um die DNS Umschreibungen.

Hatte ich ursprünglich für Vaultwarden gebraucht, da dort zwingend https gefordert ist und das dann gleich für alles andere, wie HA, Baikal, Immich, Paperless usw genutzt.

Kurz dazu eingelesen hat die Umsetzung keine 15-30 min gedauert.

Warum?

hast Du vielleicht eine falsche Vorstellung wofür das ganze gut wäre, was es absichert und was nicht… :man_shrugging:
Ein SSL-Zertifikat für https hat 2 Aufgaben, zum einen die Echtheit des Servers zu beweisen und zum anderen wird mit diesem Zertifikat die Kommunikation mit dem Weserver, in diesem Fall HA, verschlüsselt.
Ersteres ist für gewöhnlich im privaten Umfeld unnötig, es wird Dir keiner in deinem eigenen Netzwerk einen 2 gefaketen HA aufsetzten, um z.Bsp. an deine Logindaten zu gelangen.
Letzteres bedeutet, dass die Kommunikation zw. Client (z.Bsp. Browser) und Server (HA) von Dritten nicht (so einfach) mitgelesen werden kann. Wo soll “der Dritte” in einem lokalen Netz herkommen und wenn bereits jemand in deinem Netzwerk spioniert, hast Du ganz andere Probleme…
Gerade wenn dieses Thema nicht dein Steckenpferd ist, machst Du es Dir da m.E. zu kompliziert und schaffst Dir unnötig Probleme. Im professionellen Umfeld verschlüsselt man selbstverständlich auch lokale Kommunikation, aber privat…?
Es gibt verschiedene Apps für HA die https voraussetzen, dann muss man, sonst würde ich das lassen.
Wohlgemerkt NUR die lokale Kommunikation!!!

Wozu brauchst du im LAN Https? Wegen anderer Leute, die im LAN rumhängen? Dafür gibts Gastnetzwerke und ein WPA2/3 WLAN ist heutzutage auch nicht mehr so schnell zu knacken, es sei denn, du nutzt 12345 als Passwort. Ist HA zudem noch mit 2FA abgesichert, keine Chance, auch bei nur Http.

Ich selbst nutze von ausserhalb komplett dann dauerhaft aktiven Wireguard für den Zugriff, der Tunnel wird über “WG Tunnel” automatisch gestartet und gestoppt, wenn ich wieder in meinem WLAN bin.
Nur für den Notfall habe ich noch die DuckDNS+Letsencrypt Kombi, damit ich Zugriff von jedem Rechner auf der Welt habe, die URL ist aber garnicht in der Companion-App hinterlegt.

Also, vorab:

HTTPS im Lan macht bei HA dann Sinn, wenn diverse Apps darauf angewiesen sind, wie z.B. Vaultwarden/Bitwarden.

Ich hab da einiges rumprobiert und das oben genannte war einfach nicht korrekt lauffähig ohne Zertifikat.

Du musst Dein selbst erstelltes Zertifikat überall dort importieren, womit Du auf HA zugreifen willst.
Also beim iOS und Android in den Systemzertifikatsspeicher und bei Browserzugriff “trotzdem zugreifen” (oder so ähnlich) bestätigen, das Zertifikat wird dann normalerweise gespeichert.

Es ist nicht die einfachste und feinste Art aber man braucht keine externen Anbieter und/oder Umleitungen.

Für einen gewollten externen Zugriff nutze ich VPN über Wireguard auf einer Fritzbox, der Rest ist komplett dicht (keine Ports nach innen offen).

Um das zu realisieren, musst Du ein wenig googeln, dann findest Du normalerweise Hinweise dazu.

Hey,

ihr habt ja Recht und es ist übertrieben von mir.

Dachte auch eigentlich, dass der Aufwand nicht so groß ist, nur konnte ich mich jetzt davon auch nicht mehr losreißen. Deshalb habe ich nun folgendes gefunden, probiert und es funktioniert bisher

  1. Cloudflare: API-Token erstellen :white_check_mark:
  2. NPM-Addon: Zertifikat ausstellen mit Cloudflare Token
  3. NPM-Addon: Proxy Host erstellen
    1. leitet HTTPS zu HA weiter :white_check_mark:
  4. Cloudflare: A-Record setzen
    1. DNS-Server wissen, dass (sub) domain auf deine lokale IP zeigt :white_check_mark:
  5. File-editor → configuration.yaml
    1. HA erlaubt Anfragen die über NPM weitergeleitet werden :white_check_mark:

So wie ich das sehe, wird dabei kein Port geöffnet oder Traffic über Server geleitet? Höchstens bei der Erstellung des Zertifikates wird Cloudflare kurz kontaktiert.

Wie seht ihr das? Kann man es so lassen oder habe ich einen groben Schnitzer drin? :smiley:

Grüße, euer Ralf

1 „Gefällt mir“

Wozu soll das ganze gut sein?!?