Atualmente, é possível executar uma validação de DNS também com o cliente LetsEncrypt do certbot no modo manual. A automação também é possível (veja abaixo).
Plug-in manual
Você pode executar uma verificação manual - com o plug-in manual.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
O Certbot fornecerá instruções para atualizar manualmente um registro TXT para o domínio para prosseguir com a validação.
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
Depois de atualizar o registro DNS, pressione Enter, o certbot continuará e se o LetsEncrypt CA verificar o desafio, o certificado será emitido normalmente.
Você também pode usar um comando com mais opções para minimizar a interatividade e responder a perguntas do certbot. Observe que o plug-in manual ainda não suporta o modo não interativo.
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
A renovação não funciona com o plug-in manual, pois é executado no modo não interativo. Mais informações na documentação oficial do Certbot .
Atualização: ganchos manuais
Na nova versão Certbot você pode usar ganchos , por exemplo --manual-auth-hook
, --manual-cleanup-hook
. Os ganchos são scripts externos executados pelo Certbot para executar a tarefa.
As informações são passadas em variáveis de ambiente - por exemplo, domínio para validar, desafiar o token. 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
Você pode escrever seu próprio manipulador ou usar já existente; existem muitos disponíveis, por exemplo, para Cloudflare DNS.
Mais informações sobre a documentação oficial dos ganchos Certbot
Automação, Renovação, Script
Se você deseja automatizar a validação de desafios de DNS, atualmente não é possível com o vanila certbot. Atualização: é possível alguma automação com os ganchos Certbot.
Assim, criamos um plugin simples que suporta scripts com automação de DNS. Está disponível como certbot-external-auth .
pip install certbot-external-auth
Ele suporta métodos de validação DNS, HTTP, TLS-SNI. Você pode usá-lo no modo manipulador ou no modo de saída JSON.
Modo manipulador
No modo manipulador, o plug-in certbot + chama ganchos externos (um programa, shell script, python, ...) para executar a validação e instalação. Na prática, você escreve um script manipulador / shell simples que obtém argumentos de entrada - domínio, token e faz a alteração no DNS. Quando o manipulador termina, o certbot continua com a validação como de costume.
Isso oferece uma flexibilidade extra, a renovação também é possível.
O modo manipulador também é compatível com os ganchos DNS desidratados (anteriormente letsencrypt.sh). Já existem muitos ganchos de DNS para provedores comuns (por exemplo, CloudFlare, GoDaddy, AWS). No repositório, há um README com extensos exemplos e manipuladores de exemplo.
Exemplo com gancho DNS desidratado :
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
Outro modo de plug-in é o modo JSON. Produz um objeto JSON por linha. Isso permite uma integração mais complicada - por exemplo, o Ansible ou algum gerenciador de implementação está chamando certbot. A comunicação é realizada via STDOUT e STDIN. Cerbot produz objeto JSON com dados para executar a validação, por exemplo,
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"}
Depois que o DNS é atualizado, o chamador envia um caractere de nova linha para STDIN do certbot para sinalizar que ele pode continuar com a validação.
Isso permite o gerenciamento de automação e certificado no servidor de gerenciamento central. Para instalação, você pode implantar certificados pelo SSH.
Para mais informações, consulte o leia-me e exemplos no GitHub certbot-external-auth .
EDIT: Há também uma nova postagem no blog descrevendo o problema de validação de DNS e o uso do plug-in.
EDIT: atualmente trabalhamos na validação em duas etapas do Ansible, que será desativada em breve.