Zum Hauptinhalt springen

ACME DNS Challenge Integration (PowerDNS API)

Automatisierung von TLS-Zertifikaten

Zur Unterstützung kürzerer TLS-Zertifikatslaufzeiten und zur Vereinfachung der Automatisierung stellen wir eine Multi-Tenant PowerDNS API zur Verfügung. Damit können DNS-basierte ACME-Challenges (z. B. mit Let’s Encrypt oder anderen ACME-Anbietern) automatisiert werden.

Dies ermöglicht eine vollständig automatisierte Ausstellung und Erneuerung von Zertifikaten mittels DNS-01 Challenge.

 


API-Token erstellen

Vor der Nutzung der API:

  1. Im exigate anmelden
  2. Oben rechts auf das eigene Benutzerkonto klicken
  3. Im Menü den Punkt „Zugangs-Token“ auswählen
  4. Einen neuen Zugangs-Token erstellen

 

API-Zugriff

Der PowerDNS API Endpoint:

  1. https://powerdns.exigo.ch

Die Authentifizierung erfolgt über den X-API-Key Header:

  1. X-API-Key: <your-api-token>

Die API basiert auf der offiziellen PowerDNS Web API Spezifikation:
https://doc.powerdns.com/authoritative/http-api/

Es wird ein eingeschränkter Teilumfang der API bereitgestellt, der auf die Verwaltung von Zonen und Records für Automatisierungszwecke (insbesondere ACME DNS-01 Challenges) fokussiert ist.

Multi-Tenancy

Der Zugriff ist automatisch eingeschränkt:

  • Kunden sehen und verwalten nur ihre eigenen Zonen
  • Partner sehen und verwalten die Zonen aller ihrer Kunden

Es ist keine zusätzliche Konfiguration erforderlich.


Unterstützte ACME-Clients

acme.sh

Dokumentation: https://github.com/acmesh-official/acme.sh

Beispiel:

  1. export PDNS_Url="https://powerdns.exigo.ch"
  2. export PDNS_Key="<your-api-token>"
  3. acme.sh --issue --dns dns_pdns -d example.com -d '*.example.com'

Certbot (PowerDNS Plugin)

Certbot Dokumentation: https://certbot.eff.org/

Plugin Dokumentation: https://pypi.org/project/certbot-dns-powerdns/

Beispiel:

Konfigurationsdatei (pdns.ini) erstellen:

  1. dns_powerdns_api_url = https://powerdns.exigo.ch
  2. dns_powerdns_api_key = <your-api-token>

Certbot ausführen:

  1. certbot certonly \
  2. --authenticator dns-powerdns \
  3. --dns-powerdns-credentials pdns.ini \
  4. -d example.com \
  5. -d '*.example.com'

Direktes API-Beispiel

Die API kann auch direkt per HTTP angesprochen werden.

Beispiel: Erstellung eines TXT-Records für eine ACME-Challenge

  1. curl -X PATCH "https://powerdns.exigo.ch/api/v1/servers/localhost/zones/example.com." \
  2. -H "X-API-Key: <your-api-token>" \
  3. -H "Content-Type: application/json" \
  4. -d '{
  5. "rrsets": [
  6. {
  7. "name": "_acme-challenge.example.com.",
  8. "type": "TXT",
  9. "ttl": 60,
  10. "changetype": "REPLACE",
  11. "records": [
  12. {
  13. "content": "\"challenge-token\"",
  14. "disabled": false
  15. }
  16. ]
  17. }
  18. ]
  19. }'

Hinweise

  • Für ACME-Challenge-Records sollte eine niedrige TTL (z. B. 60 Sekunden) verwendet werden
  • Die Domain muss über das exigate verwaltet werden
  • Die meisten ACME-Clients entfernen Challenge-Records automatisch nach der Validierung
  • API-Tokens sollten sicher gespeichert werden (z. B. als Umgebungsvariable oder in einem Secret-Management-System)

Schreiben Sie uns bitte, falls Ihre Frage nicht beantwortet wurde

Ich brauche Unterstützung

Ich brauche Support

Operations

Markus Steinmann

E-Mail schreiben

081 254 20 50

Operations

Markus Hartmann

E-Mail schreiben

081 254 20 50

Operations

Nico Carigiet

E-Mail schreiben

081 254 20 50

captcha