Zum Hauptinhalt springen

ACME / Let's Encrypt-Integration

Übersicht

Das ACME-Protokoll (verwendet von Let's Encrypt und anderen Zertifizierungsstellen) unterstützt die DNS-01-Challenge zur Domain-Validierung. DNS-01 ist der einzige Challenge-Typ, der Wildcard-Zertifikate (*.example.com) unterstützt, und er erfordert keinen HTTP-Server auf dem Zielrechner.

NexDNS bietet native Integrationen mit drei beliebten ACME-Clients sowie einen generischen CLI-Hook für jeden Client, der manuelle DNS-Hooks unterstützt.

Alle ACME-Integrationen erfordern ein API-Token mit den Berechtigungen records.read und records.write. Erstellen Sie eines unter nexdns.tech/settings/api-keys.

acme.sh

acme.sh ist ein reiner Shell-ACME-Client. NexDNS wird als integrierter DNS API-Provider unterstützt.

Zertifikat ausstellen

export NEXDNS_Token="nxd_xxxxxxxxxxxxxxxxxxxx"
acme.sh --issue --dns dns_nexdns -d example.com -d '*.example.com'

Das Token wird nach dem ersten Durchlauf in ~/.acme.sh/account.conf gespeichert, sodass Sie es für Verlängerungen nicht erneut exportieren müssen.

Verlängern

Verlängerungen erfolgen automatisch über Cron. Um eine manuelle Verlängerung zu erzwingen:

acme.sh --renew -d example.com

lego für Traefik

lego ist ein Go-basierter ACME-Client, der auch die automatische Zertifikatsverwaltung von Traefik antreibt. NexDNS wird als DNS-Provider unterstützt.

Standalone-Nutzung

NEXDNS_API_TOKEN=nxd_xxx \
lego --dns nexdns \
    --domains example.com \
    --domains '*.example.com' \
    --email admin@example.com \
    run

Traefik-Konfiguration

Fügen Sie den NexDNS DNS-Challenge-Resolver zu Ihrer Traefik-Konfiguration hinzu. Das folgende docker-compose.yml-Beispiel zeigt eine typische Einrichtung:

services:
  traefik:
    image: traefik:v3
    command:
      - "--certificatesresolvers.nexdns.acme.dnschallenge=true"
      - "--certificatesresolvers.nexdns.acme.dnschallenge.provider=nexdns"
      - "--certificatesresolvers.nexdns.acme.email=admin@example.com"
      - "--certificatesresolvers.nexdns.acme.storage=/letsencrypt/acme.json"
    environment:
      NEXDNS_API_TOKEN: "nxd_xxxxxxxxxxxxxxxxxxxx"
    volumes:
      - letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - "443:443"

volumes:
  letsencrypt:

Verwenden Sie dann den Resolver in Ihren Service-Labels:

labels:
  - "traefik.http.routers.myapp.tls.certresolver=nexdns"
  - "traefik.http.routers.myapp.tls.domains[0].main=example.com"
  - "traefik.http.routers.myapp.tls.domains[0].sans=*.example.com"

Certbot-Client

certbot ist der offizielle Let's Encrypt-Client. Verwenden Sie das NexDNS DNS-Authenticator-Plugin für die automatisierte DNS-01-Validierung.

Plugin installieren

pip install certbot-dns-nexdns

Anmeldedatendatei erstellen

Erstellen Sie ~/.nexdns/certbot-credentials.ini mit Ihrem API-Token:

dns_nexdns_token = nxd_xxxxxxxxxxxxxxxxxxxx

Dateiberechtigungen einschränken:

chmod 600 ~/.nexdns/certbot-credentials.ini

Zertifikat ausstellen

certbot certonly \
    --authenticator dns-nexdns \
    --dns-nexdns-credentials ~/.nexdns/certbot-credentials.ini \
    -d '*.example.com'

Docker-Nutzung

docker run --rm \
    -v /etc/letsencrypt:/etc/letsencrypt \
    -v ~/.nexdns/certbot-credentials.ini:/credentials.ini:ro \
    certbot/dns-nexdns certonly \
        --authenticator dns-nexdns \
        --dns-nexdns-credentials /credentials.ini \
        -d '*.example.com'

CLI-Hook

Wenn Ihr ACME-Client manuelle DNS-Hooks unterstützt, können Sie das NexDNS CLI als Hook-Skript verwenden. Dies funktioniert mit jedem Client, der die Optionen --manual-auth-hook und --manual-cleanup-hook bereitstellt (z. B. certbot im manuellen Modus).

certbot mit CLI-Hook

certbot certonly --manual --preferred-challenges dns \
    --manual-auth-hook "nexdns acme hook --action create" \
    --manual-cleanup-hook "nexdns acme hook --action delete" \
    -d '*.example.com'

Der Hook liest die von certbot gesetzten Umgebungsvariablen CERTBOT_DOMAIN und CERTBOT_VALIDATION und erstellt oder entfernt den _acme-challenge TXT-Eintrag automatisch.

Das CLI muss vor der Verwendung von Hooks authentifiziert sein. Führen Sie nexdns auth token nxd_xxx aus oder setzen Sie die Umgebungsvariable NEXDNS_TOKEN.

Wir verwenden Cookies, um das ordnungsgemäße Funktionieren dieser Website sicherzustellen und Ihre Nutzererfahrung zu verbessern. Einige Cookies sind für den Betrieb der Website zwingend erforderlich, andere sind optional.

Sie können alle Cookies akzeptieren oder Ihre Auswahl auf die zwingend erforderlichen beschränken. Weitere Informationen finden Sie in unserer Datenschutzerklärung und unserer Cookie-Richtlinie.