Let's Encrypt Wildcardzertifikate
Mit Wildcardzertifikaten es im Gegensatz zu "normalen" Zertifikaten möglich, die Gültigkeit eines Zertifikats auf eine unbestimmte Anzahl an DNS-Namen (i.d.R. Subdomains) zu erweitern. Während ein Zertifikat im Regelfall für eine fest definierte Domain gültig ist (z.B. vgapps.de
), wird mit einem Platzhalter, auch Wildcard genannt, der Geltungsbereich entsprechend erweitert. Ein Zertifikat für *.vgapps.de
würde somit für www.vgapps.de
, subdomain1.vgapps.de
oder my-test.vgapps.de
, nicht aber für vgapps.de
oder www.test.vgapps.de
gültig sein, da zwangsläufig das Domainlevel übereinstimmen muss.
Inhaltsverzeichnis
Vorteile und Nachteile
Vorteil im Gegensatz zu fest definierten Zertifikaten ist:
- die höhere Flexibilität (ein Zertifikat für alles)
- Wartungsfreundlichkeit (es muss ebenfalls nur ein Zertifikat erneuert werden)
Nachteile ergeben sich aus
- dem höheren Aufwand bei der Verifikation (bisher nur DNS challenge) und
- dem Missbrauchspotential (ein entwendetes, nicht gesperrtes Zertifikat kann auf weitere hierfür gültige Domains angewandt werden)
Wildcard-Zertifikat einrichten
mit certbot
Dieser Artikel wurde bereits in einem Blogartikel von vNotes behandelt.
Voraussetzungen:
- Installation des ACME-Client certbot
- Möglichkeit, TXT-Records in der DNS-Zone zu erstellen
certbot -d vgapps.de -d *.vgapps.de --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns certonly
Kommandoausschnitt | Bedeutung |
---|---|
certbot |
Executable (evtl. ist alternativ ./certbot-auto benötigt, insb. bei Git-Version)
|
-d vgapps.de |
Zertifikat soll für die eigentliche Domain gültig sein... |
-d *.vgapps.de |
...sowie per Wildcard für alle Subdomains ersten Levels |
--server https://acme-v02.api.letsencrypt.org/directory |
API-Endpunkt spezifizieren (nur v2 unterstützt Wildcard) |
--manual |
manuelle challenge (nicht automatisierbar, insb. für renew wichtig) |
--preferred-challenges dns |
DNS challenge anwählen |
certonly |
nur Zertifikat holen, nicht weitere Dienste (Apache, ...) hierfür konfigurieren |
Mitunter muss neues Konto angelegt werden, weshalb die E-Mail-Adresse und eine Bestätigung der Nutzungsbedingungen (erneut) abgefragt werden.
Hiernach (und dem OK, dass Let's Encrypt die IP der anfragenden Instanz öffentlich loggt) wird folgender Text (ähnlich und natürlich bezogen auf die konkreten Domaindaten) angezeigt:
Please deploy a DNS TXT record under the name _acme-challenge.vgapps.de with the following value: 3AAfr7vk6_Ik0yg8SA_i-aiRagt11E34AdfXM3PuhFU
Der Key muss nun als TXT-Record in der jeweiligen Zone angelegt werden. Danach Enter drücken.
Hiernach wird, wenn die Optionen wie oben eingesetzt werden, noch ein weiterer Key angezeigt, den ihr auch in die Zone eintragen müsst, weil jede angefragte Domain eine eigene Challenge/Validierung benötigt. Und ja, es ist im DNS möglich, dass es zu einer Domäne mehrere Ressource Records gibt. Das Ganze kann dann z.B. in der Zone so aussehen:
_acme-challenge.vgapps.de. 300 IN TXT "3AAfr7vk6_Ik0yg8SA_i-aiRagt11E34AdfXM3PuhFU" _acme-challenge.vgapps.de. 300 IN TXT "4BAfr7vk6_Ik0yg8SA_i-aiRagt11E34AdfXM3PuhAB"
Ist die Zone geupdatet und ihr habt euch über das Zone-Update vergewissert, kann dann nochmals mit Enter bestätigt werden, sodass die Domains validiert werden. Nach Erledigung sind die Certs wie immer unter /etc/letsencrypt/live/ verfügbar. Die TXT-Records werden bis zur renewal nicht mehr benötigt.
Hinweis zur renewal: die Renewal kann aufgrund der Option --manual
nicht wie üblich mit certbot renew durchgeführt werden, sondern erfordert, dass das gleiche oben angegebene Kommando nochmals ausgeführt wird. Hierbei wird glücklicherweise kein -0001
-Unterordner erstellt.
Einzelnachweise
- ↑ vgl. Blogartikel auf vNotes sowie Originalquelle