[gelöst] Fragen zu Letsencrypt, FQDNs, HA Proxy

Started by mzurhorst, August 31, 2022, 06:47:40 PM

Previous topic - Next topic
Wenn der DNS-Eintrag für someservice.beim-horst-zuhause.de auf die externe IP-Adresse deiner Firewall zeigt, dann verbinden sich auch Clients von intern mit dieser. Und damit mit dem HA-Proxy und seinem Letsencrypt-Zertifikat, wenn alles stimmt. Das wird alles nur von der Namensauflösung und den daraus folgenden Ziel-IP-Adressen geregelt. Eigentlich logisch  ;)
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

September 05, 2022, 11:03:32 PM #16 Last Edit: September 06, 2022, 09:43:25 AM by mzurhorst
Mal ganz langsam zum Mitmeißeln, weil ich hier langsam verrückt werde.
Ich habe eingerichtet:

  • Subdomain bei Netcup:   weewx.die-zurhorsts.de  -->  CNAME:   weewx-die-zurhorsts.duckdns.org
  • In OPNsense ist DuckDNS mit dem Token konfiguriert. --> Die IP bei DuckDNS ist meine zugewiesene IP, die stimmt.
  • Im HAProxy sind Condition, Rule, Backend Pool, Public Service und Real Server konfiguriert für Port 80.  --> ich komme mit weewx.die-zurhorsts.de auf meinen Server drauf

Soweit alles easy, und an diesem Punkt verharre ich seit einigen Tagen.
Bis hierher funktioniert alles, und ich denke auch, dass da kein Fehler drin ist.


Aber nun ACME.sh / Letsencrypt:

  • ACME Client aktiviert;  keine HAProxy Integration, da ich DNS-01 verwenden möchte mit dem DuckDNS Token
  • LetsEncrypt TEST Account erfolgreich aktiviert
  • Challenge:   DNS-01 mit DuckDNS als Service;  API-Token von DuckDNS eingegeben
  • _Zertifikat:  Common Name:  weewx.die-zurhorsts.de;   kein Alt Name;  Account und Challenge gewählt.   --->  Einziger Wackelkandidat:   "DNS Alias Mode" ganz unten;  der steht auf "not using DNS alias mode".
  • Es kommt jedes einzelne Mal zu einer Fehlermeldung: Error extracting the domain. gefolgt von: Error add txt for domain:_acme-challenge.weewx.die-zurhorsts.de


Google spuckt bei dieser Fehlermeldung auch Treffer aus: 
https://github.com/acmesh-official/acme.sh/issues/2933

Kann es sein, dass DuckDNS einen weg hat? -- Läuft das bei euch?

Muss ich bei Netcup noch zusätzlich eine SubSubdomain  "_acme-challenge.weewx.die-zurhorsts.de" auf DuckDNS zeigen lassen mit CNAME? -- Oder eine *.weewx.die-zurhorsts.de? 


Ich packe hier mal eine Reihe Screenshots rein der Vollständigkeit halber.  Evtl. übersehe ich ja etwas:


@pmhausen

2. Für den FQDN des internen Hosts muss es einen Eintrag im Internet geben, der z.B. auf einen selbstbetriebenen acme-dns Server zeigt.

Vielleicht lese ichs falsch, aber mit Domain-Alias via ACME-Challenge ist das doch nicht mehr der Fall?

@mzruhorst

Ich denke daran scheitert es bei dir nämlich. Setze doch mal bitte folgendes:

* Subdomain bei Netcup: _acme-challenge.weewx.die-zurhorsts.de  -->  CNAME:  _acme-challenge.weewx-die-zurhorsts.duckdns.org
* "DNS Alias Mode" ganz unten dann konfigurieren auf weewx-die-zurhorsts.duckdns.org
* mit Staging von Letsencrypt testen, damit man nicht aus Versehen gesperrt wird :)

Damit sollte das eigentlich klappen :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

@JeGr
Etwas verkürzt, zugegeben.

Es muss einen Eintrag _acme-challenge.mein.interner.fqdn geben mit CNAME mein.acme-dns.extern.
Oder für die ganze interne Domain: _acme-challenge.interne.domain CNAME mein.acme-dns.extern.

Aber Einträge für den internen Host im externen DNS - so nenne ich das zumindest.

Gruß
Patrick
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Quote from: pmhausen on September 03, 2022, 12:31:51 PM
Jag doch alles, auch von innen, durch den Proxy mit Letsencrypt. Das schadet doch nicht.
Ansichtssache. Entweder man ver- und entschlüsselt doppelt so oft, das kostet dann Rechenleistung, vor allem, wenn der Proxy etwas älter ist und kein AES-Support im Prozessor hat. Das wird das bei entsprechendem Traffic im LAN schnell zum Flaschenhals, z.B. für Nextcloud o.Ä., wo ordentlich Daten durchgeschaufelt werden.
Oder man hat alles zwischen Proxy und Host unverschlüsselt, incl. Logindaten usw. Wenn dann mal eine Komponente hochgenommen wird, kommt der Angreifer auch anschließend wirklich überall dran.

Quote from: mzurhorst on September 03, 2022, 08:57:02 AM
Im Grunde störe ich mich in allererster Linie an der Warnung des selbst erzeugten Zertifikats.
Aber nun wird die Baustelle immer größer, nur weil ich zu bequem bin, um mir das Root-Zertifikat meiner CA auf eine handvoll Geräte zu packen.
Scheint irgendwie kein guter Deal zu sein wenn die Zeit ein kostbares Gut ist    ;D

Gibt es einen Weg, wie man diese Zertifikate in der Kommunikation "anbieten" kann? -- So nach dem Motto: "Mein Service --> meine Regeln!"   --- Dann könnte man auf den Endgeräten selbst entscheiden, ob oder ob nicht man meiner CA vertrauen möchte.
Das ist schonmal sehr gut, dass du dich daran störst, es gibt nichts schlimmeres als sich anzugewöhnen, da Ausnahmen hinzuzufügen. Dann merkt man nämlich nicht, wenn jemand dazwischen sitzt.
Es ist kein Riesenaufwand, das Root-Cert auf Geräte zu packen. Bei Windows geht das sogar per Gruppenrichtlinie, falls du AD hast. Aber auch sonst, du legst es irgendwo zugänglich ab, z.B. in einem Netzlaufwerk, USB-Stick oder auf einem Webserver und man importiert es eben einmal in den Browser oder wo auch immer man es braucht. Dauert keine 2 Minuten.

Quote from: mt on September 09, 2022, 05:53:04 PM
Ansichtssache. Entweder man ver- und entschlüsselt doppelt so oft, das kostet dann Rechenleistung, vor allem, wenn der Proxy etwas älter ist und kein AES-Support im Prozessor hat.
Welche CPU der letzten 10 Jahre hat das nicht? Ich meine, die absolute Low-End Plattform für die Sense ist sowas wie ein APU. Und selbst die kann das.

Meine Ansicht ;)
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Quote from: JeGr on September 08, 2022, 02:49:24 PM

@mzruhorst

Ich denke daran scheitert es bei dir nämlich. Setze doch mal bitte folgendes:

* Subdomain bei Netcup: _acme-challenge.weewx.die-zurhorsts.de  -->  CNAME:  _acme-challenge.weewx-die-zurhorsts.duckdns.org
* "DNS Alias Mode" ganz unten dann konfigurieren auf weewx-die-zurhorsts.duckdns.org
* mit Staging von Letsencrypt testen, damit man nicht aus Versehen gesperrt wird :)

Damit sollte das eigentlich klappen :)

So ganz 100% verstehe ich es noch immer nicht.  Aber ich habe nun ein Zertifikat.
Meine Änderungen:

  • Bei Netcup ein zweiter CNAME:    _acme-challenge.weewex  -->  _acme-challenge.die-zurhorsts.desec.io*  (ohne .weewx!)
  • Bei desc.io eine neue Domain angelegt:   _acme-challenge.die-zurhorsts.desec.io
  • Zertifikat:  DNS Alias Mode steht nun auf "Automatic  (use DNS lookups)"


So hat es geklappt.  Was ich aber nicht verstehe:
Ich habe nun unter der ursprünglichen DynDNS Domain  "die-zurhorsts.desec.io" unten drunter einen TXT Record mit dem Namen _acme-challenge.  Wie unterscheidet sich der nun wieder von der "Subdomain "_acme-challenge.die-zurhorsts.desec.io"?

Aus der Sicht von Netcup heißen die beiden ja anscheinend gleich.  Da die "Subdomain" nicht benutzt ist, habe ich diese erst mal wieder entfernt.


Tausend Dank für den Tipp. Das hat mich auf die richtige Fährte gebracht.
(nur leider nie in Tutorials gesehen, dass man bei (z.B.) Netcup dann *.weewx  weiterleiten müsste auf den DynDNS-Provider).


*:   Ich bin zu desec.io gewechselt, weil ich befürchtete, es würde an DuckDNS liegen.

> Ich habe nun unter der ursprünglichen DynDNS Domain  "die-zurhorsts.desec.io" unten drunter einen TXT Record mit dem Namen _acme-challenge.

Sieht wie aus? Sorry, da sind jetzt so viele Namen im Spiel, dass ich nicht mehr verstehe, welcher welcher ist :)
DU selbst legst normalerweise gar keine TXT Records an, sondern nur bei Netcup einen CNAME(!), der das Acme Challenge von dort eben zu einem anderen Anbieter -> jetzt eben desec - rüberschubst und DORT wird dann der TXT Record für das Challenge erzeugt und verifiziert. Das ist alles. Der TXT wird aber von acme.sh erstellt und wieder aufgereäumt, hinterher sollte also keiner mehr da sein wenn alles sauber durchgelaufen ist oder du hast einen zusätzlichen angelegt der nicht gebraucht wird :)

Zudem eh eine Empfehlung und ein Shoutout: deSEC.io (und ihr DynDNS Part) lohnen sich wirklich auch wenn man den DNS seiner eigenen Domain sinnvoll verwalten will. Jetzt auch mit 2FA Absicherung durch multiple Tokens, Tokenbasierte API die man sehr gut nutzen kann, etc. - kann ich nach Kontakt und Korrespondenz mit den Kollegen dort bislang nur empfehlen. Bessere Alternative IMHO als die Domain bei Cloudflare o.ä. zu parken um ein ordentliches DNS Interface zu haben und man darf bis zu 15 Domains pro Account (auf Anfrage auch mehr) hinpacken. Definitiv Toller Service, der _keine_ Firma ist (haben sich als .e.V. gegründet um das unabhängig betreiben zu können). Daumen hoch!

Cheers
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

December 22, 2022, 07:30:08 PM #24 Last Edit: December 23, 2022, 09:16:24 AM by mzurhorst
Hallo zusammen.

Lange ist das Ganze her, und ich bin natürlich immer noch nicht weiter gekommen.
Es nervt mich unglaublich, dass ich das nicht hin bekomme.  Ich möchte gerne das endlich abschließen und buddele es daher nochmal aus.

Hier nochmal einige Screenshots im Anhang, nützt ja nichts:

  • Netcup. Ich habe mehrere Einträge für Subdomains  (weewx, vpn, ...). -->  Diese zeigen alle auf die-zurhorsts.dedyn.io
  • deSEC.io.  Hier funktioniert die automatische Aktualisierung der IP-Adresse.  Der Wildcard-CNAME klappt auch.
  • OPNsense.   Sowohl das Zertifikat für "die-zurhorsts.dedyn.io" als auch die Zertifikate für eine "Sub-Subdomain" werden erzeugt.   Aber wenn ich meine die-zurhorsts.de Domain nutze, dann klappt es partout nicht, und ich finde den Fehler nicht.  Missverstehe ich hier denn etwas, und das kann gar nicht klappen?
  • Zertifikat-Einstellungen.   Hier habe ich unten alle vier Optionen ausprobiert. Alle scheitern leider.
  • DNS.   Wenn ich mit "dig weewx.die-zurhorsts.de" den DNS-Eintrag prüfe, dann wird der mir korrekt auf meine dynamische IP aufgelöst.


Ich habe nun so viele Tutorials durch, und im Grunde sieht das alles straight-forward aus.
Wo liegt mein Fehler?

Danke sehr und viele Grüße,
  Marcus






Ein frohes neues Jahr wünsche ich euch!

Ich kann es kaum glauben, aber ich hab den HAProxy mit Letsencrypt endlich eingerichtet bekommen.  ;D
Der Durchbruch kam im Endeffekt daher, dass ich für die Letsencrypt-Zertifikate die Challenge auf HTTP-01 geändert habe.  Damit klappen nun Wildcard-Zertifikate nicht mehr, aber das ist verschmerzbar.

Gelöst habe ich es nun so:

  • Netcup: für meine Domain einen CNAME-Eintrag  *.baerl auf DeSec.io
  • So werden alle "Sub-Sub-Domains" auf die OPNsense geleitet
  • der ACME Client erzeugt nun für jeden Dienst ein separates Zertifikat  (z.B.  weewx.baerl.die-zurhorsts.de
  • HAProxy hat nun jeweils Regeln, um den Host zu erkennen und an die entsprechende VM weiterzuleiten


Home Assistant war als einziges nun noch etwas zickig, da musste ich im Frontend das HTTP/2 raus nehmen, damit ich einen "Error 400: bad request" ausgemerzt bekomme.   



Viele Grüße,
  Marcus