Přejít k hlavnímu obsahu

Integrace s ACME / Let's Encrypt

Přehled

Protokol ACME (používaný Let's Encrypt a dalšími certifikačními autoritami) podporuje výzvu DNS-01 pro validaci domény. DNS-01 je jediný typ výzvy, který podporuje wildcard certifikáty (*.example.com), a nevyžaduje HTTP server na cílovém stroji.

NexDNS poskytuje nativní integrace se třemi populárními ACME klienty a také obecný CLI hook pro jakéhokoli klienta, který podporuje manuální DNS hooky.

Všechny integrace ACME vyžadují API token s oprávněními records.read a records.write. Vytvořte si ho na nexdns.tech/settings/api-keys.

acme.sh

acme.sh je ACME klient napsaný čistě v shellu. NexDNS je podporován jako vestavěný poskytovatel DNS API.

Vydání certifikátu

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

Token se po prvním spuštění uloží do ~/.acme.sh/account.conf, takže ho při obnovování nemusíte exportovat znovu.

Obnovení

Obnovení probíhá automaticky přes cron. Pro vynucení ručního obnovení:

acme.sh --renew -d example.com

lego a Traefik

lego je ACME klient napsaný v Go, který také pohání automatickou správu certifikátů v Traefik. NexDNS je podporován jako DNS provider.

Samostatné použití

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

Konfigurace Traefik

Přidejte NexDNS DNS challenge resolver do vaší konfigurace Traefik. Následující příklad docker-compose.yml ukazuje typické nastavení:

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:

Poté použijte resolver v labelech vaší služby:

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

certbot je oficiální klient Let's Encrypt. Použijte plugin NexDNS DNS authenticator pro automatizovanou validaci DNS-01.

Instalace pluginu

pip install certbot-dns-nexdns

Vytvoření souboru s přihlašovacími údaji

Vytvořte soubor ~/.nexdns/certbot-credentials.ini s vaším API tokenem:

dns_nexdns_token = nxd_xxxxxxxxxxxxxxxxxxxx

Omezte oprávnění souboru:

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

Vydání certifikátu

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

Použití s Docker

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'

Háček CLI

Pokud váš ACME klient podporuje manuální DNS hooky, můžete použít NexDNS CLI jako hook skript. Funguje to s jakýmkoli klientem, který poskytuje volby --manual-auth-hook a --manual-cleanup-hook (např. certbot v manuálním režimu).

certbot s 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'

Hook čte proměnné prostředí CERTBOT_DOMAIN a CERTBOT_VALIDATION nastavené certbotem a automaticky vytváří nebo odstraňuje záznam TXT _acme-challenge.

CLI musí být autentizován před použitím hooků. Spusťte nexdns auth token nxd_xxx nebo nastavte proměnnou prostředí NEXDNS_TOKEN.

Používáme soubory cookie k zajištění správného fungování těchto webových stránek a ke zlepšení Vašeho prohlížení. Některé soubory cookie jsou nezbytně nutné pro provoz webu, zatímco jiné jsou volitelné.

Můžete přijmout všechny soubory cookie, nebo omezit svůj výběr pouze na nezbytné. Podrobnosti naleznete v našich Zásadách ochrany osobních údajů a Zásadách cookies.