Let's Encrypt mit Wildcard-Zertifikaten und DNS-Challenge

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Wer einen DNS-Provider mit API-Zugang verwendet, hat gute Chancen, die Authentifizierung per DNS-Challenge zu vereinfachen. Als Beispiel bestellen wir ein Wildcard-Zertifikat.

Wer bei einer Domain viele Subdomains oder Hosts verwendet und sie alle mit einem Let's-Encrypt-Zertifikat ausstatten möchte, kann das im Prinzip auf die übliche Art machen und für jeden Namen ein Zertifikat mit dem Certbot-Tool anfordern. Es kann aber sein, dass man dabei Probleme mit den verschiedenen Bandbreitenbegrenzungen bekommt, die Let's Encrypt implementiert, um Missbrauch zu verhindern. Abhilfe können die Wildcard-Zertifikate schaffen, die Let's Encrypt im März 2018 eingeführt hat.

Außerdem wollen wir zur Verifizierung der eigenen Domain die DNS-Challenge verwenden, bei der Let's Encrypt einen Hash vorgibt, den der Betreiber einer Domain als TXT-Record in seinem DNS eintragen muss. Dafür gibt es Plugins für verschiedene DNS-Provider wie Cloudflare, Google, AWS Route53 etc., damit der Certbot den Eintrag im Hintergrund automatisch vornimmt. Zwar könnte man den Eintrag auch von Hand vornehmen, aber das würde den Vorteil der Einfachheit zunichte machen. 

Leider gibt es die Plugins für die meisten Distributionen noch nicht als Paket, sodass die Entwickler zur Verwendung eines Docker-Images raten, das die Tools enthält. Allerdings funktioniert Docker auf unserem VServer, der bereits auf Container-Technologie (OpenVZ) beruht, nicht und außerdem gab es auch zum Docker-Image in den Internet-Foren wenige Erfolgsberichte. Wir verwenden deshalb einfach den Python-Paketmanager pip und installieren alle Tools in einem separaten Verzeichnis, einem sogenannten Virtualenv:

virtualenv -p python3 certbot
cd certbot/
. bin/activate
pip install -U certbot
pip install -U certbot-dns-route53

Jetzt kann Certbot samt Route53-Plugin in dem Virtualenv verwendet werden. Man darf nur nicht vergessen, die virtuelle Python-Umgebung jeweils vor Benutzung mit dem "activate"-Skript zu aktivieren. Somit kann auch Root den so installierten Certbot benutzen:

sudo su
# . bin/activate

Zur Authentifizierung gegenüber AWS Route53, bei der wir unsere Domain eingetragen haben, verwendet Certbot die üblichen Mechanismen, die für die AWS CLI Tools oder auch Boto3 gelten. Ein Beispiel sind dafür sind die Einträge "aws_access_key_id" und "aws_secret_access_key" in "$HOME/.aws/config". Damit können Sie nun mit Certbot eine Wildcard-Domain anfordern und sich über eine DNS-Challenge authentifizieren:

# certbot certonly  -n --agree-tos --email certadmin@mydomain.com --dns-route53 -d "*.kunden.mydomain.com"

Mit dem folgenden Aufruf verifizieren Sie, ob es sich auch um eine Wildcard-Domain handelt:

openssl x509 -in /etc/letsencrypt/livekunden.mydomain.com/cert.pem -text -noout | grep -E "(CN|DNS)"
25.07.2018

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023