Endrigo Antonini

Cloudflare DNS e WAF + Let's Encrypt

February 10, 2020 | 2 Minute Read

cloudflare-logoO objetivo desse post é para descrever uma "deploy-hook" para o certbot (Certbot é uma ferramenta para obter certificados do Let`s Encrypt) que desenvolvi.

O certbot possui um plugin para integrar com a Cloudflare, porém esse atua apenas na etapa de autenticação do processo de geração do certificado. Isso é, ele apenas atua no processo de resposta do desafio para entre os servidores do Let`s Encrypt e o DNS da Cloudflare deixando para traz o processo de efetuar o deploy da chave privada e do certificado assinado na Cloudflare.

Por esse motivo criei um projeto denomidado certbot-hooks para armazenar as hooks que serão utilizadas no processo de geração de certificados. Nesse momento o projeto contém apenas uma hook denominada cloudflare-deploy.py. Abaixo vou descrever como ele funciona e a forma de utiliza-lo.

cloudflare-deploy.py

Geral

Essa hook foi criado devido à situação onde é utilizado a Cloudflare como servidor DNS e também como WAF e existe o desejo de utilizar o Let`s Encrypt para gerar um certificado para a conexão.

Então você deve utilizar a Cloudflare para autenticar o certbot usando um registro DNS (consulte o plug-in certbot-dns-cloudflare do certbot que ele é responsável por essa etapa) e também precisa configurar sua chave privada e certificado no Cloudflare. Sendo que sem essa hook essa última etapa é manual.

Essa hook foi criado com o objetivo de realizar essa ação. Publicar a chave privada e o certificado na Cloudflare.

Instalando

Clonar o repositório em algum diretório. Para esse exemplo iremos utilizar o diretório /opt fazendo com que o repositório esteja em /opt/certbot-hooks conforme exemplo abaixo.

cd /opt
git clone https://www.github.com/certbot/certbot

A linha de comando a seguir vai gerar um par de chaves localmente e responder o processo de desafio dos servidores do Let`s Encrypt e posteriormente chamar a hook para realizar o deploy do arquivo na Cloudflare.

sudo certbot certonly \
  --dns-cloudflare \
  --deploy-hook /opt/certbot-hooks/cloudflare-deploy.py \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 5 \
  -d example.com


Caso tenha alguma dúvida, sugestão de melhoria no código ou até queira publicar alguma hook que desenvolveu para o projeto certbot fique a vontade para entrar em contato, criar uma Issue ou até fazer um pull request.

comments powered by Disqus

Related Posts

AWS - Conceitos - Resumo de estudos

Autenticidade no git com o uso de chave GPG

Introdução ao Maven