Atualmente, é possível realizar uma validação de DNS também com o cliente certbot LetsEncrypt no modo manual. A automação também é possível (veja abaixo).
Plugin manual
Você pode realizar uma verificação manual - com o plug-in manual.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
O Certbot fornecerá a você instruções para atualizar manualmente um registro TXT para o domínio, a fim de 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 certificado. Observe que o plug-in manual ainda não suporta o modo não interativo.
certbot --text --agree-tos --email [email protected] -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 enquanto ele é executado no modo não interativo. Mais informações na documentação oficial do Certbot .
Atualização: ganchos manuais
Na nova versão do 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, token de desafio. 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 usá-lo já existente, há muitos disponíveis, por exemplo, para o Cloudflare DNS.
Mais informações sobre o oficial Certbot aninha a documentação
Automação, Renovação, Scripts
Se você gostaria de automatizar a validação de desafios de DNS, não é possível atualmente com o certbot vanila. Update: é possível alguma automação com os ganchos do Certbot.
Assim, criamos um plug-in simples que suporta scripts com automação de DNS. Está disponível como certbot-external-auth .
pip install certbot-external-auth
Ele suporta os métodos de validação DNS, HTTP, TLS-SNI. Você pode usá-lo no modo de tratamento ou no modo de saída JSON.
Modo do manipulador
No modo handler, o plug-in certbot + chama ganchos externos (um programa, script de shell, python, ...) para executar a validação e a instalação. Na prática, você escreve um manipulador / shell script simples que recebe argumentos de entrada - domínio, token e faz a alteração no DNS. Quando o manipulador termina, o certbot prossegue com a validação como de costume.
Isso lhe dá uma flexibilidade extra, a renovação também é possível.
O modo manipulador também é compatível com os ganchos de DNS Desidratado (antigo 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 de DNS desidratado :
certbot \
--text --agree-tos --email [email protected] \
--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. Ele produz um objeto JSON por linha. Isso permite uma integração mais complicada - por exemplo, Ansible ou algum gerenciador de implementação está chamando o certbot. A comunicação é realizada via STDOUT e STDIN. Cerbot produz objetos JSON com dados para realizar a validação, por exemplo,
certbot \
--text --agree-tos --email [email protected] \
--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"}
Quando o DNS for atualizado, o chamador enviará um caractere de nova linha para STDIN do certbot para sinalizar que ele pode continuar com a validação.
Isso permite a automação e o gerenciamento de certificados do servidor de gerenciamento central. Para instalação, você pode implantar certificados pelo SSH.
Para mais informações, consulte o leia-me e os exemplos em certbot-external-auth no GitHub.
EDIT: Há também uma nova postagem no blog descrevendo o problema de validação do DNS e o uso do plug-in.
EDIT: atualmente trabalhamos na validação de 2 etapas do Ansible, que será desativado em breve.