Genel Bakış
ACME protokolü (Let's Encrypt ve diğer sertifika otoriteleri tarafından kullanılır) alan doğrulaması için DNS-01 doğrulamasını destekler. DNS-01, wildcard sertifikaları (*.example.com) destekleyen tek doğrulama türüdür ve hedef makinede bir HTTP sunucusu gerektirmez.
NexDNS, üç popüler ACME istemcisiyle yerel entegrasyonlar ve manuel DNS hook'larını destekleyen herhangi bir istemci için genel bir CLI hook sağlar.
Tüm ACME entegrasyonları,
records.readverecords.writeizinlerine sahip bir API jetonu gerektirir. nexdns.tech/settings/api-keys adresinden bir tane oluşturun.
acme.sh
acme.sh, saf kabuk tabanlı bir ACME istemcisidir. NexDNS, yerleşik DNS API sağlayıcısı olarak desteklenir.
Sertifika Düzenleme
export NEXDNS_Token="nxd_xxxxxxxxxxxxxxxxxxxx"
acme.sh --issue --dns dns_nexdns -d example.com -d '*.example.com'
Jeton ilk çalıştırmadan sonra ~/.acme.sh/account.conf dosyasına kaydedilir, bu nedenle yenilemeler için tekrar dışa aktarmanız gerekmez.
Yenileme
Yenilemeler cron aracılığıyla otomatik olarak gerçekleşir. Manuel yenilemeyi zorlamak için:
acme.sh --renew -d example.com
Lego ve Traefik
lego, Go tabanlı bir ACME istemcisidir ve aynı zamanda Traefik'in otomatik sertifika yönetimini destekler. NexDNS, DNS sağlayıcısı olarak desteklenir.
Bağımsız Kullanım
NEXDNS_API_TOKEN=nxd_xxx \
lego --dns nexdns \
--domains example.com \
--domains '*.example.com' \
--email admin@example.com \
run
Traefik Yapılandırması
NexDNS DNS doğrulama çözümleyicisini Traefik yapılandırmanıza ekleyin. Aşağıdaki docker-compose.yml örneği tipik bir kurulumu gösterir:
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:
Ardından çözümleyiciyi servis etiketlerinizde kullanın:
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 istemcisi
certbot, resmi Let's Encrypt istemcisidir. Otomatik DNS-01 doğrulaması için NexDNS DNS kimlik doğrulama eklentisini kullanın.
Eklentiyi Kurma
pip install certbot-dns-nexdns
Kimlik Bilgileri Dosyası Oluşturma
API jetonunuzla ~/.nexdns/certbot-credentials.ini dosyasını oluşturun:
dns_nexdns_token = nxd_xxxxxxxxxxxxxxxxxxxx
Dosya izinlerini kısıtlayın:
chmod 600 ~/.nexdns/certbot-credentials.ini
Sertifika Düzenleme
certbot certonly \
--authenticator dns-nexdns \
--dns-nexdns-credentials ~/.nexdns/certbot-credentials.ini \
-d '*.example.com'
Docker Kullanımı
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 entegrasyonu
ACME istemciniz manuel DNS hook'larını destekliyorsa, NexDNS CLI'yi bir hook betiği olarak kullanabilirsiniz. Bu, --manual-auth-hook ve --manual-cleanup-hook seçeneklerini sağlayan herhangi bir istemciyle çalışır (örn. manuel modda certbot).
certbot ile 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, certbot tarafından ayarlanan CERTBOT_DOMAIN ve CERTBOT_VALIDATION ortam değişkenlerini okur ve _acme-challenge TXT kaydını otomatik olarak oluşturur veya kaldırır.
Hook'ları kullanmadan önce CLI kimlik doğrulaması yapılmış olmalıdır.
nexdns auth token nxd_xxxkomutunu çalıştırın veyaNEXDNS_TOKENortam değişkenini ayarlayın.