Il est actuellement possible d'effectuer une validation DNS également avec le client certbot LetsEncrypt en mode manuel. L'automatisation est également possible (voir ci-dessous).
Plugin manuel
Vous pouvez soit effectuer une vérification manuelle - avec le plugin manuel.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
Certbot vous donnera ensuite les instructions pour mettre à jour manuellement un enregistrement TXT pour le domaine afin de procéder à la validation.
Please deploy a DNS TXT record under the name
_acme-challenge.bristol3.pki.enigmabridge.com with the following value:
667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc
Once this is deployed,
Press ENTER to continue
Une fois que vous avez mis à jour l'enregistrement DNS, appuyez sur Entrée, certbot continuera et, si LetsEncrypt CA vérifie le défi, le certificat est émis normalement.
Vous pouvez également utiliser une commande avec plus d'options pour réduire l'interactivité et répondre aux questions de certbot. Notez que le plugin manuel ne supporte pas encore le mode non interactif.
certbot --text --agree-tos --email you@example.com -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly
Le renouvellement ne fonctionne pas avec le plugin manuel car il fonctionne en mode non interactif. Plus d'informations dans la documentation officielle de Certbot .
Mise à jour: crochets manuels
Dans la nouvelle version de Certbot vous pouvez utiliser des crochets , par exemple --manual-auth-hook
, --manual-cleanup-hook
. Les hooks sont des scripts externes exécutés par Certbot pour effectuer la tâche.
Les informations sont transmises dans des variables d'environnement - par exemple, domaine à valider, jeton de défi. Vars: CERTBOT_DOMAIN
, CERTBOT_VALIDATION
, CERTBOT_TOKEN
.
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com
Vous pouvez écrire votre propre gestionnaire ou utiliser des ressources existantes, il en existe beaucoup, par exemple pour le DNS Cloudflare.
Plus d'informations sur la documentation officielle des crochets Certbot
Automatisation, renouvellement, script
Si vous souhaitez automatiser la validation des défis DNS, cela n’est actuellement pas possible avec vanila certbot. Mise à jour: une certaine automatisation est possible avec les points d'ancrage Certbot.
Nous avons donc créé un plugin simple prenant en charge l’écriture de scripts avec l’automatisation DNS. Il est disponible sous certbot-external-auth .
pip install certbot-external-auth
Il supporte les méthodes de validation DNS, HTTP, TLS-SNI. Vous pouvez l’utiliser en mode gestionnaire ou en mode de sortie JSON.
Mode gestionnaire
En mode gestionnaire, le plugin certbot + appelle des points d'ancrage externes (programme, script shell, python, ...) pour effectuer la validation et l'installation. En pratique, vous écrivez un script de gestionnaire / shell simple qui récupère les arguments d'entrée - domaine, jeton et effectue la modification dans DNS. Lorsque le gestionnaire se termine, certbot procède à la validation comme d'habitude.
Cela vous donne une flexibilité supplémentaire, le renouvellement est également possible.
Le mode gestionnaire est également compatible avec les points d'ancrage DNS déshydratés (ancien letsencrypt.sh). Il existe déjà de nombreux points d'ancrage DNS pour les fournisseurs courants (par exemple, CloudFlare, GoDaddy, AWS). Le référentiel contient un fichier README avec des exemples détaillés et des exemples de gestionnaires.
Exemple avec un hook DNS déshydraté :
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
--certbot-external-auth:out-handler ./dehydrated-example.sh \
--certbot-external-auth:out-dehydrated-dns \
run
Mode JSON
Un autre mode de plugin est le mode JSON. Il produit un objet JSON par ligne. Cela permet une intégration plus complexe - par exemple, Ansible ou un gestionnaire de déploiement appelle certbot. La communication est effectuée via STDOUT et STDIN. Cerbot produit un objet JSON avec des données pour effectuer la validation, par exemple:
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
certonly 2>/dev/null
{"cmd": "perform_challenge", "type": "dns-01", "domain": "bs3.pki.enigmabridge.com", "token": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4", "validation": "ejEDZXYEeYHUxqBAiX4csh8GKkeVX7utK6BBOBshZ1Y", "txt_domain": "_acme-challenge.bs3.pki.enigmabridge.com", "key_auth": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4.tRQM98JsABZRm5-NiotcgD212RAUPPbyeDP30Ob_7-0"}
Une fois le DNS mis à jour, l'appelant envoie le caractère de nouvelle ligne à STDIN du certbot pour signaler qu'il peut continuer avec la validation.
Cela permet l'automatisation et la gestion des certificats à partir du serveur de gestion central. Pour l'installation, vous pouvez déployer des certificats via SSH.
Pour plus d'informations, reportez-vous au fichier Lisezmoi et aux exemples de certbot-external-auth GitHub.
EDIT: Il y a aussi un nouvel article de blog décrivant le problème de validation DNS et l'utilisation du plugin.
EDIT: nous travaillons actuellement sur la validation Ansible en 2 étapes, bientôt disponible.