A Let's Encrypt anunciou que eles têm:
Ativado o suporte para o desafio de DNS da ACME
Como faço para ./letsencrypt-auto
gerar um novo certificado usando a validação de domínio de desafio DNS?
EDIT
Quero dizer: Como evito http/https
a vinculação de portas, usando o recurso recém-anunciado (2015-01-20) que permite provar a propriedade do domínio adicionando um registro TXT específico na zona DNS do domínio de destino?
Atualmente é possível realizar a validação de DNS, também com o cliente certbot LetsEncrypt em modo manual. A automação também é possível (veja abaixo).
Plug-in manual
Você pode realizar uma verificação manual - com o plug-in manual.
O Certbot fornecerá instruções para atualizar manualmente um registro TXT para o domínio para prosseguir com a validação.
Depois de atualizar o registro DNS, pressione Enter, o certbot continuará e, se a 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.
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 do certbot você pode usar hooks , por exemplo,
--manual-auth-hook
,--manual-cleanup-hook
. Os ganchos são scripts externos executados pelo certbot para realizar 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
.Você pode escrever seu próprio manipulador ou usar os já existentes. Há muitos disponíveis, por exemplo, para DNS da Cloudflare.
Mais informações sobre a documentação oficial dos ganchos do certbot .
Automação, renovação, script
Se você deseja automatizar a validação de desafio de DNS, atualmente não é possível com o certbot vanilla.Atualização: alguma automação é possível com os ganchos do certbot.Assim, criamos um plugin simples que suporta scripts com automação de DNS. Está disponível como certbot-external-auth .
Ele suporta os métodos de validação DNS, HTTP, TLS-SNI. Você pode usá-lo no modo de manipulador ou no modo de saída JSON.
Modo de manipulador
No modo manipulador, o certbot + plugin chama ganchos externos (um programa, shell script, Python, ...) para realizar a validação e instalação. Na prática, você escreve um script simples de manipulador/shell que obtém os argumentos de entrada - domínio, token e faz a alteração no DNS. Quando o manipulador termina, o certbot prossegue com a validação normalmente.
Isso lhe dá flexibilidade extra, a renovação também é possível.
O modo manipulador também é compatível com ganchos DNS desidratados (antigo letsencrypt.sh). Já existem muitos ganchos de DNS para provedores comuns (por exemplo, CloudFlare, GoDaddy, AWS). No repositório há um README com exemplos extensos e manipuladores de exemplos.
Exemplo com gancho DNS desidratado :
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, quando o Ansible ou algum gerenciador de implantação está chamando o certbot. A comunicação é realizada via STDOUT e STDIN. O Cerbot produz objetos JSON com dados para realizar a validação, por exemplo:
Depois que o DNS é atualizado, o chamador envia o caractere de nova linha para STDIN do certbot para sinalizar que ele pode continuar com a validação.
Isso permite automação e gerenciamento de certificados a partir do servidor de gerenciamento central. Para instalação, você pode implantar certificados por SSH.
Para obter mais informações, consulte o leiame 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: No momento, trabalhamos na validação em duas etapas do Ansible, que será desativada em breve.
Consegui usar o
dehydrated
cliente para obter um certificado usando a validação de DNS.https://github.com/lukas2511/dehydrated
Você precisará usar o gancho de validação de DNS correto para seu domínio, mas há algumas opções disponíveis como exemplos:
https://github.com/lukas2511/dehydrated/wiki/Examples-for-DNS-01-hooks
A partir de hoje, o cliente oficial não suporta o tipo de desafio DNS-01 (ainda).
Veja https://community.letsencrypt.org/t/status-of-official-letsencrypt-clients-dns-01-challenge-support/9427
Você pode acompanhar o andamento neste PR . Alternativamente, existem alguns clientes que já o suportam.
Eu escrevi um script de gancho para o cliente letsencrypt.sh que permite que você use a verificação Lets Encrypt DNS para provedores de DNS que não fornecem uma API para usar (também conhecido como entrada e verificação manuais são necessárias).
Você pode conferir aqui: https://github.com/jbjonesjr/letsencrypt-manual-hook
Conforme mencionado nas respostas anteriores, você pode facilmente verificar um domínio por DNS com isso:
apt-get install -y git ruby letsencrypt git clone https://github.com/lukas2511/dehydrated.git git clone https://github.com/jbjonesjr/letsencrypt-manual-hook.git dehydrated/hooks/manual
./dehydrated/dehydrated -c -t dns-01 -d www.example.com -k ./dehydrated/hooks /manual/manual_hook.rb
Depois de tentar diferentes combinações, foi isso que funcionou para mim usando os repositórios git desidratados e letsencrypt-manual-hook . Se as etapas abaixo funcionarem para você, não se esqueça de marcar com estrela esses repositórios
NOTA: Isso é um acréscimo às respostas de panticz.de e alexcline
Você receberá um hash (depois de executar o comando acima), crie um registro TXT em seu DNS. Certifique-se de que funciona executando o comando abaixo ou o GSuite Toolbox
Agora, pressione enter no prompt. Isso não funcionou para mim, embora o registro TXT tenha sido atualizado. Eu tive que pressionar Ctrl + C e executar o comando novamente.
Agora, seus certificados públicos e privados estão presentes aqui.
Para renovar (tempo mínimo de espera é de 30 dias), basta o mesmo comando novamente.
É muito fácil de realizar ao usar
--manual-auth-hook
e--manual-cleanup-hook
no certbot .onde
auth.sh
seria algo comoe
cleanup.sh
algo comodesde que seu servidor DNS esteja configurado corretamente para permitir atualizações dinâmicas de DNS (RFC2136). Usar uma chave TSIG é altamente recomendável, mas se você optar por não usá-la, basta cortar a
-k $KEYFILE
opção ao invocarnsupdate
.Hugo Landau escreveu um cliente ACME em Go ( https://github.com/hlandau/acme ) que suporta desafios de DNS (com o protocolo nsupdate do BIND). Está funcionando perfeitamente para mim há pelo menos 18 meses.
Talvez com um dos plugins DNS do certbot ?
Para macOS