Wildcard-Zertifikate mit Let's Encrypt

Mehrere Unterdomänen mit nur einem Zertifikat absichern

Seit 2018 gibt es über Let's Encrypt die Möglichkeit, sogenannte "Wildcard-Zertifikate" ausstellen zu lassen. Die Notwendigkeit, für viele Unterdomänen einzeln Zertifikate auszustellen, entfällt somit.

Wildcard-Zertifikate sichern mehrere Domänen bzw. Unterdomänen gleichzeitig. Sie können nur mittels "DNS Challenge" ausgestellt werden, was bedeutet, das eigentlich keine automatische Erneuerung möglich ist. Das lässt den Einsatz für Websites, die ständig im Internet erreichbar sind, nicht sinnvoll erscheinen. Es ist auch nicht die von Let's Encrypt empfohlene Vorgehensweise für diese Websites (siehe ACME v2 and Wildcard Certificate Support is Live).

Für lokale Domänen dagegen, deren Zertifikate ohnehin nur mittels "DNS Challenge" ausgestellt und erneuert werden können, bieten Wildcard-Zertifikate eine erhebliche Erleichterung, da nur ein Zertifikat ausgestellt und erneuert werden muss.

Sinnvollerweise verwendet man für seine lokalen Domänen eine Unterdomäne einer ohnehin vorhandenen echten Domäne. Im hier verwendeten Beispiel ist das me.uwe-gehring.de, d.h. alle Domänennamen innerhalb der Unterdomäne me.uwe-gehring.de werden mittels eines Wildcard-Zertifikat gesichert, also z.B. server1.me.uwe-gehring.de, laptop2.me.uwe-gehring.de usw.

Die Unterdomäne me.uwe-gehring.de und alle Unterdomänen darunter werden nicht für Domänen im Internet eingesetzt, sondern nur für Rechner, virtuelle Hosts etc. im Heimnetzwerk.

Ausstellung des Zertifikats

Mit dem folgenden Befehl wird die Ausstellung des Zertifikats angefordert:

$ certbot certonly --agree-tos --manual --preferred-challenges dns \
 --manual-public-ip-logging-ok -d *.me.uwe-gehring.de -m <EMail-Adresse>

Anstelle dem Programm certbot könnte auch certbot-auto installiert sein. Beide Programme müssen als root oder mittels sudo aufgerufen werden.

Danach erscheint folgende Meldung:

-----------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.me.uwe-gehring.de with the following value:
 
mDTONIbjRTTtpBSyLpgdseQ5Lles3Op77vc31UD__GI
 
Before continuing, verify the record is deployed.
-----------------------------------------------------------------------------
Press Enter to Continue

Hier gilt es nun zunächst beim DNS-Provider die Unterdomäne _acme-challenge.me.uwe-gehring.de anzulegen und bei dieser nichts weiter als einen TXT-Eintrag zu pflegen, in den man den angezeigten Wert eingibt.

Nach dem Speichern mindestens 5 Minuten bzw. die Zeit der konfigurierten TTL abwarten und von einem anderen Rechner oder einem anderen Terminal aus eine DNS-Abfrage starten, um zu prüfen, ob der Eintrag schon abrufbar ist. Das geht z.B. mit dig -t ANY _acme-challenge.me.uwe-gehring.de. Das Ergebnis sieht wie folgt aus, wenn der Eintrag abrufbar ist:

; <<>> DiG 9.10.3-P4-Debian <<>> -t ANY _acme-challenge.me.uwe-gehring.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65445
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;_acme-challenge.me.uwe-gehring.de. IN	ANY

;; ANSWER SECTION:
_acme-challenge.me.uwe-gehring.de. 300 IN TXT	"mDTONIbjRTTtpBSyLpgdseQ5Lles3Op77vc31UD__GI"

;; Query time: 6 msec
;; SERVER: 172.26.0.2#53(172.26.0.2)
;; WHEN: Thu Sep 10 10:49:09 CEST 2020
;; MSG SIZE  rcvd: 118

Wichtig ist die ANSWER SECTION und das dort der richtige TXT-Eintrag angezeigt wird. Sobald das der Fall ist, kann das Programm certbot bzw. certbot-auto in dem anderen Terminal durch Drücken der Enter-Taste fortgesetzt werden. Danach sollte die Erfolgsmeldung von certbot kommen, dass das Zertifikat ausgestellt wurde.

Erneuerung des Zertifikats

Die Erneuerung des Zertifikats geschieht auf genau die gleiche Art und Weise wie die erstmalige Ausstellung, d.h. man verwendet den gleichen Befehl wie oben und ändert den TXT-Record im DNS in den neu generierten Wert.

Automatisierung

Die einzige Möglichkeit der Automatisierung der Ausstellung und insbesondere der Erneuerung des Zertifikats besteht dann, wenn der DNS-Provider eine API anbietet, über die der TXT-Eintrag gepflegt werden kann. In diesem Fall kann man über sogenannte Pre- und Post-Validation Hooks von certbot ein Programm starten, das den TXT-Eintrag über die API erstellt oder ändert (siehe Pre and Post Validation Hooks im certbot User Guide).

Top