Zugriff auf HA von außerhalb mit STATISCHER IP und SSL ohne externe Dienste

Ich weiß, das Thema wurde schon tausend Mal behandelt, aber es geht immer um den Zugriff per dynamischer IP und DynDNS. Ich jedoch habe eine vertraglich zugesicherte, öffentlich erreichbare, statische IPv4 und über diese würde ich gerne von außerhalb auf HA zugreifen können, aber nur SSL/TLS verschlüsselt.

Grundsätzlich sind meine Geräte ausserhalb des Heimnetzes natürlich per Wireguard mit der Fritzbox verbunden, was sich mit der App “WG Tunnel” aus F-Droid sehr gut einrichten und steuern lässt, nur lass mal ein Gerät gestohlen werden oder kaputt gehen und ich bin gerade weit abseits von Zuhause, da möchte ich trotzdem übergangsweise noch Zugriff auf HA haben, möchte aber keine weiteren, externen Dienste wie DuckDNS oder NabuCasa nutzen. Der Zugang zu HA hat selbstverständlich ein sicheres Passwort in Kombination mit 2FA.

Nun heißt es, SSL-Zertifikate können nicht auf IP-Adressen ausgestellt werden, sondern nur auf URLs, im Netz kann man normal jedoch auch direkt IP-Adressen per HTTPS aufrufen.

Zur Verfügung stehen mir:

  • feste, öffentlich erreichbare IPv4
  • Fritzbox 6690 Kabel (mit LetsEncrypt Zertifikat)
  • Raspberry Pi 5 mit HA

Kann man mit diesen Mitteln und sicherlich LetsEncrypt und Nginx mein Vorhaben umsetzen? Oder gibt es tatsächlich noch einen einfacheren Weg, den ich nur übersehen habe?

Dann fehlt Die noch Deine eigenenDomain.
Dann bei Deinem Domain Hoster, einen A Record auf Deine Feste WAN ip erstellen.

Dann würde ich Dir den Nginx Proxy Manager (Add-on) empfehlen.

Über diesen verwaltest Du dann die Zertifikate sowie die jeweiligen Hosts.

Entsprechende Ports Weiterleitung in Deinem Router erstellen.

Eingehend 443 zu NPM 443
Für die http chalange, musst auch noch den Port 80 zu NPM 80 weiterleiten.

Anleitungen gibt es in Netzt genug. Suche einfach nach Home Assistant & NPM

Gruß Osorkon

1 „Gefällt mir“

Ein Domain Hoster ist doch aber auch ein externer Dienst.(?)

Dein Internet Provider auch…

SSL wird ohne Domain nicht richtig laufen.

LG

1 „Gefällt mir“

Beim waschen wird man bekanntlich nass. :wink:

Irgendeiner muss ja die Namensauflösung übernehmen.
Domain —> Deine WAN IP

Gruß Osorkon

1 „Gefällt mir“

Stimmt natürlich, so weit habe ich (mal wieder) nicht gedacht.

Habe es jetzt doch erstmal mit DuckDNS probiert, nur schlägt die Zertifikatserstellung fehl, unter DuckDNS, wie auch LetsEncrypt direkt, keine Ahnung, woran es liegt.

s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service duckdns: stopping
[15:51:20] INFO: e[32mService duckdns exited with code 256 (by signal 15)e[0m
s6-rc: info: service duckdns successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
OK
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service duckdns: starting
s6-rc: info: service duckdns successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
# INFO: Using main config file /data/workdir/config
+ Account already registered!
[15:51:28] INFO: e[32mStarting DuckDNS...e[0m
[15:51:29] INFO: e[32mRenew certificate for domains: ---.duckdns.org and aliases: e[0m
# INFO: Using main config file /data/workdir/config
Processing ---.duckdns.org
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting new certificate order from CA...
 + Received 1 authorizations URLs from the CA
 + Handling authorization for ---.duckdns.org
 + 1 pending challenge(s)
 + Processing each challenge individually...
Processing domain: ---.duckdns.org

Terminated
ERROR: deploy_challenge hook returned with non-zero exit code

Hast Du die Portweiterleitung im Router eingerichtet?

Gruß Osorkon

1 „Gefällt mir“

Ah, Danke, ich habe keine Http Challenge probiert, da aus allen Anleitungen im Netz hervorgeht, man soll dns für die Challenge nutzen. Dann probiere ich das mal mit http. Den Port 80 kann uch dann aber wieder schließen, oder? Wie sieht es bei einer Zertifikatserneuerung aus, muß der dann erneut geöffnet werden?
Das Ganze ist mal wieder komplizierter, als die meisten Anleitungen vorgaukeln. :roll_eyes:

Bei einer DNS-Challenge brauchst du keinen Port öffnen. Für eine HTTP-Challenge den Port 80. Danach kannst Du diesen wieder schließen.
Und für die Erneuerung dann wieder öffnen.

Gruß Osorkon

1 „Gefällt mir“

Aber es ist ja eben die DNS Challenge unter dem DuckDNS-Addon, die nicht läuft, bei NGINX bin ich noch garnicht, steht ja in den Anweisungen, NGINX erst einrichten/starten, wenn ein Zertifikat erstellt ist. Alles gemacht wie im Video von Simon, aber Abbruch wie oben.

Edit:

So, jetzt funktioniert es. Lag am eingestellten DNS Server fürs Heimnetzwerk, mußte erst kurz die Standardserver des Providers einstellen und dann gab es unter LetsEncrypt trotzdem noch etliche Fehlschläge, aber es waren im Log von LetsEncrypt Fortschritte zu sehen, bis beim x-ten Versuch die Challenge endlich durchlief und das Zertifikat erstellt wurde. Jetzt hab ich zwar sone hässliche DuckDNS Domain, aber ist ja nur für den Notfall und nem geschenkten Barsch schaut man bekanntlich nicht hinter die Kiemen. :laughing:

Also nochmals vielen Dank an alle Beteiligten!

Habe hier 8123 auf Nginx 443 gemacht, aus Sicherheitsgründen und Gewohnheit.