Certbot mit STACKIT DNS verwenden
Diese Anleitung zeigt Ihnen, wie Sie die DNS01 ACME-Challenge mit Certbot nutzen. Sie lernen Folgendes:
- Einrichtung von Certbot, Nginx und dem STACKIT-Certbot-Plugin auf einem Ubuntu-Server.
- Erstellung eines Wildcard-Zertifikats für eine Zone.
- Verweisen eines A-Records auf die Server-IP.
- Auflösen der Domain zur Anzeige der Webinhalte von Nginx – vollständig SSL-verschlüsselt.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Ubuntu-Server:
- Stellen Sie sicher, dass Sie Zugriff auf einen Ubuntu-Server haben, vorzugsweise mit einer öffentlichen IP für die Erreichbarkeit über das Internet. Obwohl ähnliche Schritte für andere Linux-Distributionen gelten, konzentriert sich diese Anleitung auf Ubuntu.
- Für dieses Tutorial verwenden wir ein STACKIT Ubuntu VM-Setup basierend auf diesem Tutorial. Stellen Sie sicher, dass Port 22 (SSH), Port 80 (HTTP-Verkehr) und Port 443 (SSL-Verkehr) in den Einstellungen der Security Group geöffnet sind.
- STACKIT DNS Zone: Verfügen Sie über eine konfigurierte Zone, wie zum Beispiel
certbot.runs.onstackit.cloudfür diese Anleitung. - Erforderliche Zugangsdaten: Ein dedizierter Service Account und ein entsprechender Authentifizierungstoken sind für den Deployment-Prozess erforderlich. Certbot wird programmatisch einen temporären TXT-Record in der DNS-Zone erstellen und löschen, wofür der Service Account Berechtigungen auf Projektmitglieder-Ebene benötigt.
Implementierung
Abschnitt betitelt „Implementierung“-
Ermitteln Sie die IP-Adresse des Servers.
Terminal-Fenster wget -qO- ifconfig.schwarz | xargs echoSie erhalten eine Ausgabe wie diese:
193.148.162.182Ab hier geht die Anleitung davon aus, dass die IPv4-Adresse Ihres Servers
193.148.162.182lautet. Ersetzen Sie diese Adresse durch die individuelle IPv4-Adresse Ihres Servers. -
Konfigurieren Sie einen A-Record.
Richten Sie einen Wildcard-A-Record ein, der auf die IP-Adresse Ihres Servers verweist. Dies stellt sicher, dass jeder nachfolgende Record in der Zone auf den Ubuntu-Server auflöst, was den Nutzen des Wildcard-Zertifikats verdeutlicht.

-
Nginx installieren
Installieren Sie Nginx mit apt:
Terminal-Fenster sudo apt updatesudo apt install nginxBestätigen Sie, dass Nginx läuft:
Terminal-Fenster curl [http://193.148.162.182](http://193.148.162.182)Wenn alles funktioniert, erhalten Sie eine Ausgabe wie diese:
<!DOCTYPE html><html><head><title>Welcome to nginx!</title>...Nginx auf Ubuntu 22.04 liefert Dokumente standardmäßig aus /var/www/html aus. Für mehrere Websites ist es besser, separate Verzeichnisse zu haben. Anstatt /var/www/html zu ändern, werden wir eine separate Struktur einrichten.
-
Verzeichnisse erstellen
Erstellen Sie ein Verzeichnis für
app.certbot.runs.onstackit.cloud:Terminal-Fenster sudo mkdir -p /var/www/app.certbot.runs.onstackit.cloud/htmlErstellen und bearbeiten Sie die index.html:
Terminal-Fenster sudo vi /var/www/app.certbot.runs.onstackit.cloud/html/index.htmlSie erhalten eine Ausgabe wie die folgende:
<html><head><title>Welcome to app.certbot.runs.onstackit.cloud!</title></head><body><h1>Success!</h1></body></html> -
Nginx Server Block Konfiguration
Erstellen Sie einen neuen Server Block:
Terminal-Fenster sudo vi /etc/nginx/sites-available/app.certbot.runs.onstackit.cloudFügen Sie die entsprechende Konfiguration ein. Stellen Sie sicher, dass Sie das richtige Verzeichnis und den richtigen Domainnamen gesetzt haben.
server {listen 80;listen [::]:80;# ssl block will be needed later# listen 443 ssl;# ssl on;# ssl_certificate /etc/letsencrypt/live/certbot.runs.onstackit.cloud/fullchain.pem;# ssl_certificate_key /etc/letsencrypt/live/certbot.runs.onstackit.cloud/privkey.pem;root /var/www/app.certbot.runs.onstackit.cloud/html;index index.html index.htm index.nginx-debian.html;server_name app.certbot.runs.onstackit.cloud www.app.certbot.runs.onstackit.cloud;location / {try_files $uri $uri/ =404;}}Aktivieren Sie die neue Konfiguration:
Terminal-Fenster sudo ln -s /etc/nginx/sites-available/app.certbot.runs.onstackit.cloud /etc/nginx/sites-enabled/Validieren Sie die Nginx-Konfigurationen:
Terminal-Fenster sudo nginx -tWenn keine Fehler auftreten, starten Sie Nginx neu:
Terminal-Fenster sudo systemctl restart nginx -
Testen
Rufen Sie
http://app.certbot.runs.onstackit.cloud/in Ihrem Browser auf. Wenn dies erfolgreich ist, sollten Sie die Website sehen, die Sie gerade eingerichtet haben.
-
Certbot installieren
Bisher ist unsere Verbindung ungesichert. Um die Sicherheit zu erhöhen, werden wir Certbot in Verbindung mit dem STACKIT-Plugin einsetzen.
Terminal-Fenster sudo apt install python3 python3-venvsudo python3 -m venv /opt/certbot/sudo /opt/certbot/bin/pip install --upgrade pipsudo /opt/certbot/bin/pip install certbot certbot-dns-stackitsudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot -
Authentifizierungs-Zugangsdaten einrichten
Damit Certbot eigenständig einen TXT-Record in der Zone erstellen kann, ist eine Authentifizierung erforderlich. Erstellen Sie einen neuen oder verwenden Sie einen vorhandenen Service Account Key und laden Sie die Service Account JSON-Datei herunter, zum Beispiel
service-account.json. Wenn Sie einen bereitgestellten Private Key verwenden, muss dieser zur Dateiservice-account.jsonhinzugefügt werden:{"id": "*SERVICE_ACCOUNT_KEY_ID*","publicKey": "*PUBLIC_KEY*","createdAt": "2025-12-09T07:51:11.569+00:00","keyType": "USER_MANAGED","keyOrigin": "*GENERATED*","keyAlgorithm": "RSA_2048","active": true,"credentials": {"kid": "*SERVICE_ACCOUNT_KEY_ID*","iss": "*SERVICE_ACCOUNT_EMAIL*","sub": "*SERVICE_ACCOUNT_ID*","aud": "[https://stackit-service-account-prod.apps.01.cf.eu01.stackit.cloud](https://stackit-service-account-prod.apps.01.cf.eu01.stackit.cloud)","privateKey": "*PRIVATE_KEY*"}}Falls ein Private Key bereitgestellt wurde, enthält die
service-account.jsonden privateKey nicht. Der Private Key kann mit dem folgenden Befehl hinzugefügt werden (private-key.pementhält Ihren bereitgestellten Private Key,service-account.jsonist die heruntergeladene Service Account JSON-Datei ohne den Private Key):Terminal-Fenster jq ". | .credentials.privateKey = \"$(cat private-key.pem | sed 's/$/\\n/g' | tr -d '\n')\"" service-account.json > service-account-with-private-key.json -
Wildcard-Zertifikat erstellen
Erstellen Sie ein Wildcard-Zertifikat für Ihre Zone:
Terminal-Fenster sudo certbot certonly \--authenticator dns-stackit \--dns-stackit-project-id \ # Ihre Projekt-ID--dns-stackit-service-account ./service-account.json \ # Ihre Service Account JSON--dns-stackit-propagation-seconds 300 \--server [https://acme-v02.api.letsencrypt.org/directory](https://acme-v02.api.letsencrypt.org/directory) \--agree-tos \-d 'certbot.runs.onstackit.cloud' \-d '*.certbot.runs.onstackit.cloud'Sobald der Befehl ausgeführt wird, beginnt Certbot mit der Erstellung eines temporären TXT-Records innerhalb der angegebenen Zone:

-
Record-Propagierung
Wenn die Propagierung erfolgreich ist, wird Certbot den temporären Record wieder entfernen. Warten Sie, bis der Vorgang abgeschlossen ist, was bis zu 300 Sekunden oder länger dauern kann. Ein erfolgreiches Ergebnis wird mit einer entsprechenden Meldung angezeigt:
Successfully received certificate.Certificate is saved at: /etc/letsencrypt/live/certbot.runs.onstackit.cloud/fullchain.pemKey is saved at: /etc/letsencrypt/live/certbot.runs.onstackit.cloud/privkey.pemThis certificate expires on 2023-12-26.These files will be updated when the certificate renews.NEXT STEPS:- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See [https://certbot.org/renewal-setup](https://certbot.org/renewal-setup) for instructions.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -If you like Certbot, please consider supporting our work by:* Donating to ISRG / Let's Encrypt: [https://letsencrypt.org/donate](https://letsencrypt.org/donate)* Donating to EFF: [https://eff.org/donate-le](https://eff.org/donate-le)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Sie können das Vorhandensein des Zertifikats auf der Maschine mit folgendem Befehl bestätigen:
Terminal-Fenster sudo certbot certificatesSie erhalten eine Ausgabe wie diese:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Found the following certs:Certificate Name: certbot.runs.onstackit.cloudSerial Number: 3e826ad25e4a1ef87e91cfd1d34979bf412Key Type: ECDSADomains: certbot.runs.onstackit.cloud *.certbot.runs.onstackit.cloudExpiry Date: 2023-12-26 13:23:19+00:00 (VALID: 90 days)Certificate Path: /etc/letsencrypt/live/certbot.runs.onstackit.cloud/fullchain.pemPrivate Key Path: /etc/letsencrypt/live/certbot.runs.onstackit.cloud/privkey.pem- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SSL für Nginx aktivieren
Entfernen Sie die Kommentierung der zuvor auskommentierten SSL-Konfiguration in der Nginx-Konfigurationsdatei, um SSL zu aktivieren:
Terminal-Fenster sudo vi /etc/nginx/sites-available/app.certbot.runs.onstackit.cloudSie erhalten eine Ausgabe wie die folgende:
server {listen 80;listen [::]:80;listen 443 ssl;ssl on;ssl_certificate /etc/letsencrypt/live/certbot.runs.onstackit.cloud/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/certbot.runs.onstackit.cloud/privkey.pem;root /var/www/app.certbot.runs.onstackit.cloud/html;index index.html index.htm index.nginx-debian.html;server_name app.certbot.runs.onstackit.cloud www.app.certbot.runs.onstackit.cloud;location / {try_files $uri $uri/ =404;}}Nachdem die Änderungen vorgenommen wurden, starten Sie Nginx neu, um die aktualisierte Konfiguration anzuwenden:
Terminal-Fenster sudo systemctl restart nginx -
Testen der sicheren Verbindung
Da das Zertifikat nun installiert ist, rufen Sie https://app.certbot.runs.onstackit.cloud/ in Ihrem Browser auf. Die Verbindung sollte SSL-verschlüsselt sein, was ein sicheres Surferlebnis gewährleistet.
