Actualmente es posible realizar una validación de DNS también con el cliente certbot LetsEncrypt en el modo manual. La automatización también es posible (ver más abajo).
Complemento manual
Puede realizar una verificación manual, con el complemento manual.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
Luego, Certbot le proporcionará instrucciones para actualizar manualmente un registro TXT para el dominio a fin de continuar con la validación.
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
Una vez que haya actualizado el registro DNS, presione Entrar, certbot continuará y si LetsEncrypt CA verifica el desafío, el certificado se emite normalmente.
También puede usar un comando con más opciones para minimizar la interactividad y responder preguntas de certbot. Tenga en cuenta que el complemento manual aún no admite el modo no interactivo.
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
La renovación no funciona con el complemento manual, ya que se ejecuta en modo no interactivo. Más información en la documentación oficial de Certbot .
Actualización: ganchos manuales
En la nueva versión Certbot puede utilizar ganchos , por ejemplo --manual-auth-hook
, --manual-cleanup-hook
. Los ganchos son scripts externos ejecutados por Certbot para realizar la tarea.
La información se pasa en variables de entorno, por ejemplo, dominio para validar, token de desafío. 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
Puede escribir su propio controlador o utilizar los existentes, hay muchos disponibles, por ejemplo, para Cloudflare DNS.
Más información sobre la documentación oficial de ganchos Certbot
Automatización, Renovación, Scripting
Si desea automatizar la validación de los desafíos de DNS, actualmente no es posible con vanila certbot. Actualización: es posible cierta automatización con los ganchos Certbot.
Por lo tanto, creamos un complemento simple que admite secuencias de comandos con la automatización de DNS. Está disponible como certbot-external-auth .
pip install certbot-external-auth
Es compatible con los métodos de validación DNS, HTTP, TLS-SNI. Puede usarlo en el modo de controlador o en el modo de salida JSON.
Modo de controlador
En el modo de controlador, el complemento certbot + llama a enlaces externos (un programa, script de shell, python, ...) para realizar la validación e instalación. En la práctica, escribe un script simple de controlador / shell que obtiene argumentos de entrada: dominio, token y realiza el cambio en DNS. Cuando finaliza el controlador, certbot continúa con la validación como de costumbre.
Esto le brinda una flexibilidad adicional, la renovación también es posible.
El modo de controlador también es compatible con los enlaces DNS deshidratados (anteriormente letsencrypt.sh). Ya hay muchos enlaces DNS para proveedores comunes (por ejemplo, CloudFlare, GoDaddy, AWS). En el repositorio hay un archivo README con ejemplos extensos y manejadores de ejemplos.
Ejemplo con gancho DNS deshidratado :
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
Modo JSON
Otro modo de complemento es el modo JSON. Produce un objeto JSON por línea. Esto permite una integración más complicada, por ejemplo, Ansible o algún administrador de implementación llama a certbot. La comunicación se realiza a través de STDOUT y STDIN. Cerbot produce objetos JSON con datos para realizar la validación, por ejemplo,
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"}
Una vez que se actualiza el DNS, la persona que llama envía un carácter de nueva línea a STDIN del certbot para indicar que puede continuar con la validación.
Esto permite la automatización y la administración de certificados desde el servidor de administración central. Para la instalación, puede implementar certificados a través de SSH.
Para obtener más información, consulte el archivo Léame y los ejemplos en certbot-external-auth GitHub.
EDITAR: También hay una nueva publicación de blog que describe el problema de validación de DNS y el uso del complemento.
EDITAR: actualmente trabajamos en la validación de 2 pasos de Ansible, saldremos pronto.