pete55
Goto Top

Lets Encrypt Zertifikate unter OPNsense

Hallo Zusammen,
ich möchte unter OPNsense ein Let's Encrypt wildcard Zertifikat einrichten, welches automatisch erneuert wird (Auto Renew Funktion).
Soweit ich rausgefunden habe, kann man Let's Encrypt wildcard Zertifikate nur mittels Challenge Type 'DNS-01' erstellen. Und dafür bräuchte man einen Domain Hoster der dafür eine API bereitstellt. Das Problem ist nun, dass ich meine Domain bei Strato registriert habe und die keine API anbieten.
Weiterhin habe ich rausgefunden, dass ich mir über Strato ein Let's Encrypt Zertifikat mittels 'nsupdate (RFC2136)' und den 'TXT Record' erstellen lassen könnte, dann aber bei jeder Erneuerung des Let's Encrypt Zertifikats, also alle 90 Tage, den 'TXT Record' händisch aktualisieren müsste und damit die Auto Renew Funktion nicht nutzen könne, ist das richtig?
Eine weitere Möglichkeit wäre, mich bei z.B. cloudflare zu registrieren und deren DNS Server bei strato eintrage - ich möchte aber gerne vermeiden einen US-amerikanischen Dienst wie cloudflare zu nutzen.

Für mich sehe ich nun folgende Möglichkeiten das umzusetzen:
1. Ich wechsel den Domain Hoster, z.B. zu Hetzner die bieten auch Let's Encrypt Zertifikate an und es gäbe eine API (zumindest lt. ACME Tool in OPNsense).
2. Gibt es einen deutschen Pendant zu cloudflare der eine API bereitstellt?

Hat jemand Vorschläge, Ideen, Hinweise oder Anregungen dazu wie ich das umsetzen könnte?

Viele Grüße
Pete

Content-ID: 1460577336

Url: https://administrator.de/contentid/1460577336

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

tech-flare
tech-flare 03.11.2021 um 10:19:09 Uhr
Goto Top
Hallo,

ich habe bzgl. der DNS in Verbindung mit der Opnsense und API sehr gute Erfahrungen bei Hetzner und INWX gemacht.
149569
149569 03.11.2021 aktualisiert um 10:33:30 Uhr
Goto Top
Hat jemand Vorschläge, Ideen, Hinweise oder Anregungen dazu wie ich das umsetzen könnte?
Ich betreibe meinen eigenen Nameserver und ein PHP-Skript mit dem ich das hinzufügen der TXT Records dann automatisiere.
LordGurke
LordGurke 03.11.2021 um 11:24:47 Uhr
Goto Top
"nsupdate" ist das Gegenteil von händisch. Das ist dafür gedacht, dass du aus deiner Software heraus DNS-Einträge aktualisieren kannst. Quasi die älteste entwickelte DNS-API.

Wie das bei Strato eingerichtet wird, müssten die als Anleitung ja irgendwo stehen haben — dann sollte sich das auch automatisieren lassen.
Pete55
Pete55 03.11.2021 um 11:36:13 Uhr
Goto Top
Zitat von @LordGurke:

"nsupdate" ist das Gegenteil von händisch. Das ist dafür gedacht, dass du aus deiner Software heraus DNS-Einträge aktualisieren kannst. Quasi die älteste entwickelte DNS-API.

Wie das bei Strato eingerichtet wird, müssten die als Anleitung ja irgendwo stehen haben — dann sollte sich das auch automatisieren lassen.

Habe bisher dazu keine Infos finden können. Auch die Hotline von Strato konnte nicht weiterhelfen, dort bekam ich nur die Auskunft dass es eine Unterstützung von Let's Encrypt Zertifikate nicht geben würde.

So wie ich es verstanden habe, geht es um den 'TXT Record' der bei einer Erneuerung des Zertifikats aktualisiert werden muss. Dies würde aber nur funktionieren wenn der Hoster eine API dafür bereitstellen oder nsupdate (RFC2136) unterstützen würde, beides scheint bei Strato nicht der Fall zu sein, so dass der 'TXT Record' händisch eingetragen werden muss. Oder hat jemand andere Infos?
149569
149569 03.11.2021 aktualisiert um 12:08:33 Uhr
Goto Top
Zitat von @Pete55:
beides scheint bei Strato nicht der Fall zu sein, so dass der 'TXT Record' händisch eingetragen werden muss.
Geht bei Strato definitiv nicht per API, könntest dir höchstens ein Skript schreiben das das über die WebGUI macht, aber das wird dir dann jedes mal auf dei Füße fallen sobald Strato das GUI ändert.
Ich habe mich davon unabhängig gemacht indem ich mir einfach meinen eigenen Nameserver augfgesetzt habe, da kann ich schalten und walten wie ich lustig bin face-wink.
Pete55
Pete55 03.11.2021 aktualisiert um 12:13:34 Uhr
Goto Top
Zitat von @149569:

Zitat von @Pete55:
beides scheint bei Strato nicht der Fall zu sein, so dass der 'TXT Record' händisch eingetragen werden muss.
Geht bei Strato nicht, könntest dir höchstens ein Skript schreiben das das über die WebGUI macht, aber das wird dir dann jedes mal auf dei Füße fallen sobald Strato das GUI ändert.
Ich habe mich davon unabhängig gemacht indem ich mir einfach meinen eigenen Nameserver augfgesetzt habe, da kann ich schalten und walten wie ich lustig bin face-wink.

Ja, die Idee mit dem eigenen Nameserver ist gut, aber ich habe im Moment keine Zeit um einen eigenen DNS aufzusetzen, ich suche eine schnellere und weniger aufwendige Lösung.
Gibt es denn nicht eine deutsche Alternative zu Cloudflare mit der man das umsetzen kann?
149569
149569 03.11.2021 aktualisiert um 12:23:31 Uhr
Goto Top
Zitat von @Pete55:
Gibt es denn nicht eine deutsche Alternative zu Cloudflare mit der man das umsetzen kann?
Klar gibt's die , z.B. https://desec.io/
Managed Account anlegen, Nameserver deiner Domain auf die von deSEC umleiten, feddisch.
Pete55
Pete55 03.11.2021 um 12:27:42 Uhr
Goto Top
Zitat von @149569:

Zitat von @Pete55:
Gibt es denn nicht eine deutsche Alternative zu Cloudflare mit der man das umsetzen kann?
Klar gibt's die , z.B. https://desec.io/
Managed Account anlegen, Nameserver deiner Domain auf die von deSEC umleiten, feddisch.

Das sieht nach dem aus was ich gesucht habe, ich schau mir das mal an, vielen Dank face-wink
Pete55
Pete55 03.11.2021 aktualisiert um 13:09:15 Uhr
Goto Top
Zitat von @Pete55:

Zitat von @149569:

Zitat von @Pete55:
Gibt es denn nicht eine deutsche Alternative zu Cloudflare mit der man das umsetzen kann?
Klar gibt's die , z.B. https://desec.io/
Managed Account anlegen, Nameserver deiner Domain auf die von deSEC umleiten, feddisch.

Das sieht nach dem aus was ich gesucht habe, ich schau mir das mal an, vielen Dank face-wink

Habe mir ein Konto bei deSEC.io erstellt, meine Domain dort angelegt und deren Nameserver bei Strato im 'NS Record' unter 'Eigene Nameserver' angegeben.
deSEC.io hat mir noch Keys für DNSSEC angegeben, einzutragen bei DS bzw. DNSKEY Record, aber das DNSSEC wird von Strato wohl (noch) nicht angeboten.
Hab natürlich gleich mal eine DNS Lookup gemacht, aber noch werden die Nameserver von Strato ausgegeben - Jetzt heißt es wohl erstmal warten...
Pete55
Pete55 03.11.2021 aktualisiert um 21:40:22 Uhr
Goto Top
So, die Nameserver sind umgestellt.
Habe es auch geschafft mir ein Let's Encrypt Zertifikat zu erstellen face-smile

Aber leider bekomme ich im Browser folgenden Fehler
Fehlercode: SSL_ERROR_BAD_CERT_DOMAIN

Habe mittlerweile einige Einstellungen im Zertifikat ausprobiert, hat aber alles nichts geholfen.
Meiner Recherche nach sollen die Eingaben für ein Let's Encrypt Wildcard Zertifikat folgendermaßen aussehen.

certificate

Hat jemand eine Idee was ich ändern muss damit der Fehler behoben wird?

VG Pete
149569
149569 03.11.2021 aktualisiert um 21:57:56 Uhr
Goto Top
Zitat von @Pete55:

So, die Nameserver sind umgestellt.
Habe es auch geschafft mir ein Let's Encrypt Zertifikat zu erstellen face-smile

Aber leider bekomme ich im Browser folgenden Fehler
Fehlercode: SSL_ERROR_BAD_CERT_DOMAIN

Ein wichtiger Hinweis:

Ein Wildcard Zertifikat inkludiert nur die erste Ebene keine weiteren Subdomain Ebenen

meinedomain.de == OK
sub.meinedomain.de == OK
bla.sub.meinedomain.de == NOT OK

Als Common!Name nehme ich immer als erstes den Wildcard und in den SANs eben falls Wildcard und Root Domain, macht aber keinen Unterschied so lange die Client SSL Implementierung nicht fehlerhaft ist

Das Zertifikat sollte so in Ordnung sein, dann kann es nur noch an deiner Webserver Config oder deinem Aufruf liegen.
Vermutlich lieferst du nicht das Chain-Zertifikat an den Client aus sondern nur das reine Zertifikat ohne Intermediates.
Pete55
Pete55 03.11.2021, aktualisiert am 04.11.2021 um 06:45:36 Uhr
Goto Top
Zitat von @149569:

Zitat von @Pete55:

So, die Nameserver sind umgestellt.
Habe es auch geschafft mir ein Let's Encrypt Zertifikat zu erstellen face-smile

Aber leider bekomme ich im Browser folgenden Fehler
Fehlercode: SSL_ERROR_BAD_CERT_DOMAIN

Ein wichtiger Hinweis:

Ein Wildcard Zertifikat inkludiert nur die erste Ebene keine weiteren Subdomain Ebenen

meinedomain.de == OK
sub.meinedomain.de == OK
bla.sub.meinedomain.de == NOT OK

Das ist ein guter Hinweis, denn meine interne Domains sind nach folgendem Muster aufgebaut:
hostname.local.meinedomain.de

Für mein Vorhaben funktioniert dann ein Wildcard Zertifikat leider nicht. Dann werde ich auf hostname.meinedomain.de verkürzen, sollte funtionieren denn dies würde ja intern mittels Overrides umgeleitet werden, so daß es mit der Domain "draußen" keine Problem geben sollte. Aber erstmal muss ich das Problem für die 1. Eben lösen.


Als Common!Name nehme ich immer als erstes den Wildcard und in den SANs eben falls Wildcard und Root Domain, macht aber keinen Unterschied so lange die Client SSL Implementierung nicht fehlerhaft ist

Das Zertifikat sollte so in Ordnung sein, dann kann es nur noch an deiner Webserver Config oder deinem Aufruf liegen.
Vermutlich lieferst du nicht das Chain-Zertifikat an den Client aus sondern nur das reine Zertifikat ohne Intermediates.

Das ist auch ein guter Hinweis, das könnte sehr gut sein. Wie liefere ich den das Chain-Zertifikat aus, keine Anleitung die ich bisher zu diesem Thema gesehen habe hat dies erwähnt?
149569
149569 04.11.2021 aktualisiert um 08:13:08 Uhr
Goto Top
Zitat von @Pete55:
Das ist ein guter Hinweis, denn meine interne Domains sind nach folgendem Muster aufgebaut:
hostname.local.meinedomain.de
Jepp dann ist die Fehlermeldung natürlich verständlich, das geht so nicht.

Das ist auch ein guter Hinweis, das könnte sehr gut sein. Wie liefere ich den das Chain-Zertifikat aus, keine Anleitung die ich bisher zu diesem Thema gesehen habe hat dies erwähnt?
Das sind ja auch eigentlich Zertifikatsgrundlagen, wie auch das obige Thema ...
https://community.letsencrypt.org/t/what-are-those-pem-files/18402
Pete55
Pete55 04.11.2021 aktualisiert um 09:56:00 Uhr
Goto Top
Jetzt macht die Erstellung des Zertifikats schon wieder Probleme, es ist echt zum Mäusemelken...

Wenn ich unter Common Name nur 'meinedomain.de' oder '*.meinedomain.de' stehen habe und das Feld 'Alt Names ' leer bleibt, dann wird erfolgreich ein Zertifikat ausgestellt.

Sobald ich einen Eintrag in 'Alt Names' habe, heißt es im System Log

2021-11-04T08:15:12	opnsense[29568]	AcmeClient: validation for certificate failed: meinedomain.de
2021-11-04T08:15:12	opnsense[29568]	AcmeClient: domain validation failed (dns01)

Der Befehl der aufgerufen wird ist

2021-11-04T08:15:07	opnsense[29568]	AcmeClient: running acme.sh command: /usr/local/sbin/acme.sh --issue --syslog 7 --debug 3 --server 'letsencrypt' --dns 'dns_desec' --dnssleep '120' --home '/var/etc/acme-client/home' --certpath '/var/etc/acme-client/certs/123456789.123456/cert.pem' --keypath '/var/etc/acme-client/keys/123456789.123456/private.key' --capath '/var/etc/acme-client/certs/123456789.123456/chain.pem' --fullchainpath '/var/etc/acme-client/certs/123456789.123456/fullchain.pem' --domain 'meinedomain.de' --domain '*.meinedomain.de' --days '1' --force --keylength '4096' --accountconf '/var/etc/acme-client/accounts/123456789.123456_prod/account.conf'  

sieht nach meiner Meinung nach in Ordnung aus?!?

Oder habe ich das Rate Limit von Let's Encrypt erreicht; müsste dann aber eine entsprechende Meldung im System Log geben?
Wenn ich im Account 'Let's encrypt Test CA' einstelle, da wird das Zertifikat wie gewünscht ausgestellt, wenn ich wieder auf 'Let's encrypt [default]' zurückstelle, dann kommen obige Fehlermeldungen.
149569
149569 04.11.2021 aktualisiert um 10:18:11 Uhr
Goto Top
Oder habe ich das Rate Limit von Let's Encrypt erreicht
Sehr sehr wahrscheinlich, das ist bei Duplikaten für die selbe Domain sehr schnell der Fall (max. 5 Duplikate für die selbe Domain / Woche), deswegen sollte man für Tests immer nur die Staging-Umgebung benutzen dafür ist die da, erst wenn man sicher ist switcht man live! An deiner Stelle würde ich mich erst nochmal eingehend mit den Basics von Zertifikaten auseinandersetzen, Trial & Error geht da garantiert in die Hose!

Kannst du selbst für deine Domain überprüfen wie oft du Zertifikate ausgestellt hast. Einfach auf https://crt.sh nachsehen face-smile
müsste dann aber eine entsprechende Meldung im System Log geben?
Meist nicht, der Rückgabecode von Lets's Encrypt ist in dem Fall etwas uneindeutig, das schlägt dann beim Erreichen des Limits einfach fehl.

Bitte noch auf gelöst setzen nicht vergessen.
Pete55
Pete55 04.11.2021 aktualisiert um 15:42:40 Uhr
Goto Top
Habe wohl das Limit hinsichtlich der Duplikate erreicht face-sad ...wieder was gelernt.
Zitat von @149569:

Oder habe ich das Rate Limit von Let's Encrypt erreicht
Sehr sehr wahrscheinlich, das ist bei Duplikaten für die selbe Domain sehr schnell der Fall (max. 5 Duplikate für die selbe Domain / Woche),

Habe wohl das Limit hinsichtlich der Duplikate erreicht face-sad ...wieder was gelernt.
deswegen sollte man für Tests immer nur die Staging-Umgebung benutzen dafür ist die da, erst wenn man sicher ist switcht man live! An deiner Stelle würde ich mich erst nochmal eingehend mit den Basics von Zertifikaten auseinandersetzen, Trial & Error geht da garantiert in die Hose!

Da hast du wohl recht. Für mich sah es so aus als wenn das mit ein bisschen Grundwissen und ein paar Klicks einzurichten wäre, zumindest suggerieren dies die kurzen Anleitungen und Videos dazu - aber die Praxis sieht dann doch wieder anders aus.
Kannst du selbst für deine Domain überprüfen wie oft du Zertifikate ausgestellt hast. Einfach auf https://crt.sh nachsehen face-smile

Danke für den Link, wäre meine nächste Frage gewesen
müsste dann aber eine entsprechende Meldung im System Log geben?
Meist nicht, der Rückgabecode von Lets's Encrypt ist in dem Fall etwas uneindeutig, das schlägt dann beim Erreichen des Limits einfach fehl.

Bitte noch auf gelöst setzen nicht vergessen.

Vielen Dank Euch für die Hilfe und Hinweise.