Automatisierte Wildcard-Zertifikat-Erneuerung mit Certbot und Ionos DNS-Challenge

Automatisierte Wildcard-Zertifikat-Erneuerung mit Certbot und Ionos DNS-Challenge

In diesem Beitrag zeige ich, wie man Wildcard-Zertifikate automatisch erneuern kann – ideal für Setups wie AdGuard Home. Dabei verwenden wir Certbot mit dem Ionos DNS-Plugin, um die DNS-01 Challenge zu meistern.

<your_api_key>

Voraussetzungen

  • VPS mit AdGuard Home: AdGuard Home läuft auf Ihrem VPS und nutzt Port 443 für TLS.
  • Ionos Domain: Ihre Domain wird über Ionos verwaltet. Sie benötigen API-Zugangsdaten von Ionos.
  • Wildcard-Zertifikate: Sie möchten Wildcard-Zertifikate (z.B. yourdomain.com und *.yourdomain.com) automatisch erneuern.

Schritt 1: Certbot und Abhängigkeiten installieren

Da Python 3.10 und höher in Systemen mit einem "externally-managed environment" arbeiten, empfiehlt sich die Verwendung einer virtuellen Umgebung.

Certbot und das Ionos DNS-Plugin installieren:

sudo apt install python3-pip certbot python3.11-venv

Python Environment einrichten und die Umgebung aktivieren:

python3 -m venv ~/.certbot-env
source ~/.certbot-env/bin/activate
pip install certbot-dns-ionos

Hinweis: Falls Sie das Plugin systemweit installieren möchten, können Sie alternativ sudo pip install certbot-dns-ionos --break-system-packages verwenden – dies wird jedoch nicht empfohlen.


Schritt 2: Ionos API-Zugang einrichten

  1. API-Zugangsdaten erstellen:
    • Loggen Sie sich in das API Entwicklerportal ein.
    • Navigieren Sie zu "API Access" und erstellen Sie einen neuen API-Schlüssel.

Inhalt der ionos.ini :

dns_ionos_endpoint = https://api.hosting.ionos.com/
dns_ionos_prefix = <your_api_prefix>
dns_ionos_secret = <your_api_key>

Tragen Sie in den entsprechenden Feldern Ihre Ionos-Daten ein. Anschließend sichern Sie die Datei:

chmod 600 ~/.secrets/certbot/ionos.ini

Konfigurationsdatei für Certbot erstellen: Erstellen Sie ein Verzeichnis für sichere Dateien, falls noch nicht vorhanden:

mkdir -p ~/.secrets/certbot

Erstellen Sie die Datei ionos.ini:

nano ~/.secrets/certbot/ionos.ini

Schritt 3: Zertifikat anfordern

Führen Sie den folgenden Befehl aus, um ein Wildcard-Zertifikat anzufordern. Da Certbot Systempfade wie /var/log/letsencrypt/ verwendet, sollten Sie den Befehl als root (mittels sudo) ausführen:

sudo ~/.certbot-env/bin/certbot certonly \
  --authenticator dns-ionos \
  --dns-ionos-credentials ~/.secrets/certbot/ionos.ini \
  -d "yourdomain.com" -d "*.yourdomain.com" \
  --preferred-challenges dns-01

Ersetzen Sie yourdomain.com mit Ihrer tatsächlichen Domain.


Schritt 4: Automatische Erneuerung und Neustart von AdGuard Home

Um die Zertifikatserneuerung zu automatisieren und AdGuard Home nach einer erfolgreichen Erneuerung neu zu starten, richten Sie einen Cronjob ein:

Fügen Sie folgende Zeile hinzu:

0 3 * * 1 ~/.certbot-env/bin/certbot renew --quiet --dns-ionos-credentials ~/.secrets/certbot/ionos.ini && systemctl restart AdGuardHome

Dieser Cronjob führt jeden Montag um 3 Uhr morgens eine Erneuerungsprüfung durch. Wird ein Zertifikat erneuert, startet er AdGuard Home automatisch neu, um das neue Zertifikat zu laden.

Cronjob bearbeiten:

sudo crontab -e

Fazit

Mit diesem Setup können Sie Ihre Wildcard-Zertifikate automatisiert erneuern und AdGuard Home ohne manuelles Eingreifen aktuell halten. Die Kombination aus Certbot, dem Ionos DNS-Plugin und einem Cronjob sorgt für einen reibungslosen Betrieb und nimmt Ihnen den Aufwand der manuellen Zertifikatserneuerung ab.

Hoffentlich hilft Ihnen dieser Leitfaden dabei, Ihr System effizient zu verwalten. Viel Erfolg!