Wildcard-Zertifikat von Let’s Encrypt mit DNS-Validierung

SSL 3 Min. Lesezeit

Ein Wildcard-Zertifikat (*.pelda.hu) schützt alle Subdomains der ersten Ebene der Domain, sodass für jede neue Subdomain kein separates Zertifikat beantragt werden muss. Let’s Encrypt stellt Wildcard-Zertifikate kostenlos aus, jedoch nur mit DNS-Validierung: Die Kontrolle über die Domain muss durch einen TXT-Eintrag namens _acme-challenge.pelda.hu nachgewiesen werden.

Bei cPanel-Hosting-Paketen ist dies in der Regel nicht erforderlich, da AutoSSL automatisch ein Zertifikat für jede Subdomain beantragt. Dieser Artikel richtet sich an Betreiber eigener VPS- oder dedizierter Server.

Worauf sollten Sie achten?

  • *.pelda.hu schützt nur die Subdomains, nicht jedoch die Adresse pelda.hu selbst. Beantragen Sie daher beides: -d pelda.hu -d '*.pelda.hu'.
  • Ein Wildcard-Eintrag schützt nur eine Ebene: Er gilt für die Adresse „bolt.pelda.hu“, nicht jedoch für die Adresse „teszt.bolt.pelda.hu“.
  • Der TXT-Eintrag muss bei jeder Verlängerung neu angelegt werden. Da die Verlängerung bei manueller Erstellung nicht automatisiert werden kann, sollten Sie ein Tool verwenden, das den Eintrag über die API des DNS-Anbieters selbst erstellt.

mit acme.sh (empfohlen)

acme.sh ist ein einfacher ACME-Client, der die APIs von mehr als hundert DNS-Anbietern unterstützt.

Installation

curl https://get.acme.sh | sh -s email=it@pelda.hu
source ~/.bashrc
acme.sh --set-default-ca --server letsencrypt

Der letzte Befehl legt Let’s Encrypt als Standard-Zertifikatsaussteller fest, da acme.sh standardmäßig ZeroSSL verwendet.

Beantragung, wenn das DNS bei Cloudflare gehostet wird

Erstellen Sie in Cloudflare ein API-Token mit den Berechtigungen „Zone → DNS → Bearbeiten“ für die betreffende Domain und gehen Sie anschließend wie folgt vor:

export CF_Token="a-cloudflare-api-token"
acme.sh --issue --dns dns_cf -d pelda.hu -d '*.pelda.hu'

Beantragung, wenn sich die DNS auf dem cPanel-Hosting-Server befindet

Wenn Ihre Domain unsere Nameserver nutzt und Sie die DNS-Zone über cPanel verwalten, kann acme.sh den Eintrag auch über die cPanel-API erstellen. Erstellen Sie in cPanel ein API-Token (Sicherheit → API-Token verwalten) und gehen Sie anschließend wie folgt vor:

export cPanel_Username="cpanel-felhasznalonev"
export cPanel_Apitoken="a-cpanel-api-token"
export cPanel_Hostname="https://a-cpanel-szerver-neve:2083"
acme.sh --issue --dns dns_cpanel -d pelda.hu -d '*.pelda.hu'

Das API-Token gewährt vollständigen Zugriff auf Ihr cPanel-Konto; behandeln Sie es daher wie ein Passwort.

Installation auf dem Webserver

acme.sh --install-cert -d pelda.hu \
  --key-file       /etc/ssl/pelda.hu.key \
  --fullchain-file /etc/ssl/pelda.hu-fullchain.crt \
  --reloadcmd      "systemctl reload nginx"

acme.sh richtet bei der Installation zudem eine tägliche Cron-Aufgabe ein, die das Zertifikat rechtzeitig erneuert, es an die oben genannten Speicherorte kopiert und den Webserver neu startet. Die API-Daten werden gespeichert, sodass sie für die Erneuerung nicht erneut eingegeben werden müssen.

Mit Certbot

Certbot kann auch Wildcard-Zertifikate beantragen, sofern ein Plugin für Ihren DNS-Anbieter vorhanden ist. Beispielsweise bei Cloudflare:

dnf install python3-certbot-dns-cloudflare   # vagy: apt install python3-certbot-dns-cloudflare

cat > /root/.cloudflare.ini <<'EOF'
dns_cloudflare_api_token = a-cloudflare-api-token
EOF
chmod 600 /root/.cloudflare.ini

certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials /root/.cloudflare.ini \
  -d pelda.hu -d '*.pelda.hu'

Die Verlängerung erfolgt ebenso automatisch wie bei den anderen Certbot-Zertifikaten; siehe: Beantragung eines Let’s Encrypt-Zertifikats mit Certbot.

Manuelle DNS-Validierung (nur einmalig verwendbar)

Falls Ihr DNS-Anbieter keine API bereitstellt, können Sie den Eintrag auch manuell erstellen:

certbot certonly --manual --preferred-challenges dns -d pelda.hu -d '*.pelda.hu'

Certbot gibt den Namen und den Wert des zu erstellenden TXT-Eintrags aus. Erstellen Sie diesen im DNS, warten Sie, bis er sichtbar ist (dig TXT _acme-challenge.pelda.hu +short), und drücken Sie erst danach die Eingabetaste. Das so erhaltene Zertifikat wird nicht automatisch verlängert; Sie müssen den Vorgang vor Ablauf des Zertifikats wiederholen. Daher wird dies nicht als dauerhafte Lösung empfohlen.

Tipp: CNAME-Delegierung

Falls Sie den API-Schlüssel, der Zugriff auf die gesamte DNS-Zone gewährt, nicht auf dem Server speichern möchten, können Sie den Namen „_acme-challenge.pelda.hu“ mittels eines CNAME-Eintrags auf eine andere, ausschließlich für diesen Zweck genutzte Zone umleiten, für die Sie über API-Zugriff verfügen. acme.sh unterstützt dies mit dem Schalter „--challenge-alias“.

Falls auf der Domain ein CAA-Eintrag vorhanden ist, sollte dieser „letsencrypt.org“ enthalten; bei einem Wildcard-Zertifikat sollte zusätzlich das Tag „issuewild“ angegeben werden, sofern Sie einen solchen Eintrag verwenden.

Zurück: SSL-Artikel (35)