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
- 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!