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.readarecords.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_xxxnebo nastavte proměnnou prostředíNEXDNS_TOKEN.