Como obter certificados SSL Let's Encrypt usando a validação DNS Certbot CloudFlare

Como Obter Certificados Ssl Let S Encrypt Usando A Validacao Dns Certbot Cloudflare



Certbot é um cliente ACME para autoridade de certificação (CA) Let’s Encrypt. Ele é usado para gerar um certificado SSL Let’s Encrypt e renová-lo automaticamente. Por padrão, o Certbot usa o desafio Let’s Encrypt HTTP-01 para verificar a propriedade do domínio e emitir um certificado SSL para o domínio. Mas o desafio HTTP-01 não funcionará a menos que você tenha um endereço IP público e seu computador seja acessível pela Internet. Portanto, se quiser usar os certificados Let’s Encrypt SSL para sua rede doméstica ou rede privada, você deverá usar o desafio DNS-01. Quando o desafio DNS-01 é usado, Let’s Encrypt verifica a propriedade do domínio usando o servidor DNS do domínio. Portanto, também funciona para redes privadas.

Para obter uma explicação detalhada sobre como funciona o desafio Let’s Encrypt DNS-01 (ou validação de DNS), leia o artigo intitulado O que é o desafio Let’s Encrypt DNS-01 e como usá-lo para obter os certificados SSL.

Neste artigo, mostraremos como usar a validação Let’s Encrypt DNS para obter um certificado SSL para o seu nome de domínio usando o plugin Certbot e Certbot CloudFlare DNS.







Tópico de Conteúdo:

  1. Gerenciando seu domínio com CloudFlare DNS
  2. Instalando o plug-in Certbot e Certbot CloudFlare no Ubuntu/Debian
  3. Instalando o plug-in Certbot e Certbot CloudFlare no Fedora
  4. Instalando o plug-in Certbot e Certbot CloudFlare no RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Verificando se o plug-in Certbot e Certbot CloudFlare estão instalados corretamente
  6. Gerando um token de API CloudFlare
  7. Armazenando com segurança o token da API CloudFlare no computador/servidor
  8. Gerando um certificado SSL usando a validação DNS Certbot CloudFlare
  9. Listando os certificados SSL Let's Encrypt usando Certbot
  10. Renovando os certificados SSL Let's Encrypt usando Certbot
  11. Conclusão
  12. Referências

Gerenciando seu domínio com CloudFlare DNS

Para obter um certificado SSL Let’s Encrypt usando a validação DNS CloudFlare, você deve ter uma conta CloudFlare e seu domínio deve usar o DNS CloudFlare. Você pode crie uma conta CloudFlare gratuitamente e o serviço DNS CloudFlare também é gratuito.



Para gerenciar seu domínio com CloudFlare DNS, você pode fazer o seguinte:



  • Registre seu domínio na CloudFlare
  • Transfira seu domínio para CloudFlare
  • Altere o servidor de nomes DNS do seu nome de domínio para o servidor de nomes DNS CloudFlare no painel do seu registrador de domínio

Você não precisa comprar um domínio da CloudFlare ou transferir um domínio para a CloudFlare para gerenciá-lo com o serviço DNS da CloudFlare. Você pode simplesmente alterar o servidor de nomes do seu domínio para o servidor de nomes DNS CloudFlare no painel do seu registrador de domínio (de onde você comprou o domínio) e gerenciar seu domínio no CloudFlare. Para obter mais informações sobre como alterar o servidor de nomes do seu domínio para o servidor de nomes DNS CloudFlare, leia este artigo.





Instalando o plug-in Certbot e Certbot CloudFlare no Ubuntu/Debian

Os plugins Certbot e Certbot CloudFlare estão disponíveis no repositório oficial de pacotes do Ubuntu/Debian. Assim, você pode instalá-los no Ubuntu/Debian com muita facilidade.

Primeiro, atualize o cache do repositório de pacotes APT com o seguinte comando:



$ sudo atualização adequada

  Uma captura de tela de um computador Descrição gerada automaticamente

Para instalar o plugin Certbot e Certbot CloudFlare DNS, execute o seguinte comando:

$ sudo apto instalar certbot python3-certbot-dns-cloudflare

Para confirmar a instalação, pressione “Y” e depois pressione .

O plugin Certbot e Certbot CloudFlare DNS estão sendo instalados. Demora um pouco para ser concluído.

Neste ponto, o plugin Certbot e Certbot CloudFlare DNS devem ser instalados.

Instalando o plug-in Certbot e Certbot CloudFlare no Fedora

Os plugins Certbot e Certbot CloudFlare estão disponíveis no repositório oficial de pacotes do Fedora e podem ser instalados no Fedora com muita facilidade.

Primeiro, atualize o banco de dados do pacote DNF com o seguinte comando:

$ sudo dnf makecache

  Uma captura de tela de um computador Descrição gerada automaticamente

Para instalar o plugin Certbot e Certbot CloudFlare DNS no Fedora, execute o seguinte comando:

$ sudo dnf instalar certbot python3-certbot-dns-cloudflare

Para confirmar a instalação, pressione “Y” e depois pressione .

  Uma captura de tela de um computador Descrição gerada automaticamente

O plugin Certbot e Certbot CloudFlare DNS estão sendo instalados. Demora um pouco para ser concluído.

  Uma captura de tela de um programa de computador Descrição gerada automaticamente

Neste ponto, o plugin Certbot e Certbot CloudFlare DNS devem ser instalados no Fedora.

  Uma captura de tela de um computador Descrição gerada automaticamente

Instalando o plug-in Certbot e Certbot CloudFlare no RHEL/AlmaLinux/Rocky Linux/CentOS Stream

O plugin Certbot CloudFlare DNS não está disponível nos repositórios de pacotes oficiais do RHEL/AlmaLinux/Rocky Linux/CentOS Stream. O plugin Certbot CloudFlare DNS está disponível no repositório de pacotes EPEL. Você pode habilitar o repositório de pacotes EPEL em RHEL/AlmaLinux/Rocky Linux/CentOS Stream e instalar o plugin Certbot CloudFlare DNS a partir daí.

Depois de ativar o repositório de pacotes EPEL, atualize o cache do banco de dados DNF com o seguinte comando:

$ sudo dnf makecache

  Uma captura de tela de um computador Descrição gerada automaticamente

Em seguida, instale o plugin Certbot e Certbot CloudFlare DNS em seu sistema RHEL/AlmaLinux/Rocky Linux/CentOS Stream com o seguinte comando:

$ sudo dnf instalar certbot python3-certbot-dns-cloudflare

Para confirmar a instalação, pressione “Y” e depois pressione .

  Uma captura de tela de um computador Descrição gerada automaticamente

O plugin Certbot e Certbot CloudFlare DNS estão sendo instalados. Demora um pouco para ser concluído.

  Uma captura de tela de um computador Descrição gerada automaticamente

Para aceitar a chave GPG do repositório EPEL, pressione “Y” e depois pressione .

  Uma captura de tela de um computador Descrição gerada automaticamente

Neste ponto, o plugin Certbot e Certbot CloudFlare DNS devem ser instalados.

  Uma captura de tela de um computador Descrição gerada automaticamente

Verificando se o plug-in Certbot e Certbot CloudFlare estão instalados corretamente

Para verificar se o Certbot está instalado no seu computador, execute o seguinte comando:

$ certificadobot --versão

Se o Certbot estiver instalado, o comando deverá imprimir o número da versão do Certbot instalado em seu computador.

Como você pode ver, temos o Certbot 2.1.0 instalado em nossa máquina Debian.

  Uma captura de tela de um computador Descrição gerada automaticamente

Para verificar se o plugin Certbot CloudFlare DNS está instalado em seu computador, execute o seguinte comando:

$ sudo plug-ins do certbot

Se o plugin Certbot CloudFlare DNS estiver instalado, você deverá encontrar “dns-cloudflare” na lista de plugins conforme marcado na imagem a seguir:

  Uma captura de tela de um computador Descrição gerada automaticamente

Gerando um token de API CloudFlare

Para verificar a propriedade do domínio, o Certbot precisa adicionar um registro TXT no domínio gerenciado pelo servidor DNS CloudFlare. Para isso, o Certbot precisa de acesso ao token API CloudFlare. Você pode criar um token de API para o seu domínio no painel CloudFlare.

Primeiro, faça login na sua conta CloudFlare. Em seguida, clique no ícone do seu perfil

> Meu perfil no canto superior direito da página.

Navegue até a seção “Tokens de API” [1] e clique em “Criar Token” [2] .

  Uma captura de tela de um computador Descrição gerada automaticamente

Clique em “Usar modelo” na seção “Editar DNS da zona”.

  Uma captura de tela de um computador Descrição gerada automaticamente

Na seção “Permissão”, conceda a permissão “Editar” para “Zona DNS” selecionando as opções marcadas nos menus suspensos.

  Uma captura de tela de um computador Descrição gerada automaticamente

Se você gerencia vários domínios com CloudFlare, você pode permitir a modificação de uma “Zona específica” na seção “Recursos de zona”. Permitir que um token de API modifique apenas uma zona é mais seguro do que permitir que o token de API modifique todas as zonas. Isso ocorre porque se o token da API for comprometido, a superfície de ataque será menor e menos danos serão causados.

  Uma captura de tela de um computador Descrição gerada automaticamente

Se você quiser usar uma única chave de API para modificar todos os seus domínios gerenciados pelo CloudFlare, selecione “Todas as zonas” na seção “Recursos de zona”.

  Uma captura de tela de um computador Descrição gerada automaticamente

Assim que terminar de configurar seu token API, clique em “Continuar para o resumo”.

  Uma captura de tela de um computador Descrição gerada automaticamente

Um resumo das ações que você pode realizar em seus domínios gerenciados pela CloudFlare com o token API será exibido. Clique em “Criar Token”.

  Uma captura de tela de um computador Descrição gerada automaticamente

Um token de API deve ser criado. Copie o token da API em algum lugar seguro para não perdê-lo. Depois de sair desta página, você não conseguirá encontrar esse token de API novamente. Você deve gerar um novo token de API caso perca-o:

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  Uma captura de tela de um computador Descrição gerada automaticamente

Armazenando com segurança o token da API CloudFlare no computador/servidor

Certbot precisa usar o token API CloudFlare para adicionar um novo registro TXT para seu domínio no servidor DNS CloudFlare. Portanto, você deve armazenar o token da API CloudFlare em seu computador/servidor. Armazenar o token da API sem garantir as permissões adequadas de acesso ao arquivo pode permitir que outros programas/usuários tenham acesso ao token da API. Não é isso que você deseja por razões de segurança. Nesta seção, mostraremos como armazenar com segurança o token da API CloudFlare no sistema de arquivos.

Primeiro, crie um diretório (ou seja, ~/.secrets/certbot) onde deseja armazenar a chave da API CloudFlare da seguinte forma:

$ mkdir -pv ~ / .segredos / certificadobot

  Uma captura de tela de um computador Descrição gerada automaticamente

Crie um arquivo “cloudflare.ini” no diretório recém-criado (ou seja, ~/.secrets/certbot) e abra-o com seu editor de texto favorito (ou seja, nano) da seguinte forma:

$ nano ~ / .segredos / certificadobot / cloudflare.ini

Digite a seguinte linha no arquivo “cloudflare.ini” e pressione + X seguido por “Y” e para salvá-lo (se você estiver usando o editor de texto nano).

dns_cloudflare_api_token = < seu-cloudflare-api-token >

  Uma captura de tela de um computador Descrição gerada automaticamente

Para garantir uma permissão de acesso adequada para o arquivo “cloudflare.ini”, execute os seguintes comandos para garantir que apenas o usuário root tenha acesso de leitura e gravação ao arquivo:

$ sudo chown raiz: raiz ~ / .segredos / certificadobot / cloudflare.ini

$ sudo chmod 06:00 ~ / .segredos / certificadobot / cloudflare.ini

Como você pode ver, apenas o usuário root tem permissões de leitura e gravação no arquivo “cloudflare.ini”.

$ eu -lh ~ / .segredos / certificadobot / cloudflare.ini

Outros usuários que tentarem ler o arquivo “cloudflare.ini” receberão uma mensagem de erro “Permissão negada”.

$ gato ~ / .segredos / certificadobot / cloudflare.ini

  Uma captura de tela de um computador Descrição gerada automaticamente

Gerando um certificado SSL usando a validação DNS Certbot CloudFlare

Para gerar um certificado Let's Encrypt SSL para o nome de domínio curinga “*.nodekite.com” usando a validação DNS CloudFlare, execute o comando cerbot da seguinte forma:

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-credenciais ~ / .segredos / certificadobot / cloudflare.ini -d * .nodekite.com

Para gerar um certificado SSL Let’s Encrypt para os nomes de domínio “nodekite.com” e “www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-credenciais ~ / .segredos / certificadobot / cloudflare.ini -d www.nodekite.com -d nodekite.com

Se as alterações de DNS demorarem muito para serem propagadas para os servidores de nomes DNS populares em todo o mundo, você pode usar a opção “–dns-cloudflare-propagation-seconds” do Certbot para definir o número de segundos que você deseja que o Certbot espere antes da validação do DNS é desempenhado.

$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-credenciais ~ / .segredos / certificadobot / cloudflare.ini --dns-cloudflare-propagação-segundos 60 -d * .nodekite.com

Depois de executar o comando Certbot, você será solicitado a digitar seu endereço de e-mail. Digite seu endereço de e-mail e pressione continuar.

Pressione “Y” e depois pressione para aceitar os “Termos de Serviço” do Let’s Encrypt.

  Uma captura de tela de um computador Descrição gerada automaticamente

Pressione “Y” e depois pressione .

  Uma captura de tela de um programa de computador Descrição gerada automaticamente

Um certificado Let’s Encrypt SSL está sendo emitido. Demora um pouco para ser concluído.

  Uma captura de tela de um erro do computador Descrição gerada automaticamente

Neste ponto, o certificado Let’s Encrypt SSL é emitido. O caminho completo onde os arquivos do certificado SSL são salvos deverá ser exibido. A data de expiração do certificado SSL também deve ser exibida.

  Uma captura de tela de um computador Descrição gerada automaticamente

Listando os certificados SSL Let's Encrypt usando Certbot

Você pode listar todos os certificados Let’s Encrypt SSL gerados usando Certbot com o seguinte comando:

$ sudo certificados certbot

Como você pode ver, o certificado SSL Let's Encrypt gerado para o domínio “nodekite.com” está listado [1] . Um certificado SSL curinga é emitido para “nodekite.com” [2] nome do domínio. A data de validade do certificado é 20/03/2024 (válido por 89 dias) [3] . O certificado e o caminho da chave privada também estão listados aqui [4] .

  Uma captura de tela de um computador Descrição gerada automaticamente

Certbot armazena todos os certificados SSL que você gerou para seus domínios no diretório “/etc/letsencrypt/live” em suas respectivas pastas.

$ sudo eu -Rh / etc. / letsencrypt / ao vivo /

  Uma captura de tela de um computador Descrição gerada automaticamente

Renovando os certificados SSL Let's Encrypt usando Certbot

Certbot renova automaticamente todos os certificados SSL Let’s Encrypt que você gerou usando a validação DNS CloudFlare.

Para testar se o recurso de renovação automática dos certificados Let’s Encrypt SSL funciona, execute o seguinte comando:

$ sudo renovação do certbot --funcionamento a seco

A ação de renovação automática é simulada para cada um dos certificados Let’s Encrypt SSL que você gerou.

  Uma captura de tela de um computador Descrição gerada automaticamente

Se os testes forem bem sucedidos, você estará de parabéns. Um teste bem-sucedido significa que os certificados SSL serão renovados automaticamente antes de expirarem. Você não terá que fazer mais nada.

  Uma captura de tela de um computador Descrição gerada automaticamente

Para que o recurso de renovação automática do Certbot funcione, o temporizador do systemd “cerbot.timer” deve estar habilitado e ativo em seu computador/servidor.

Você pode verificar se o timer do systemd “cerbot.timer” está habilitado e ativo com o seguinte comando:

$ sudo status do systemctl certbot.timer

Como você pode ver, o timer do systemd “certbot.timer” está habilitado (inicia automaticamente no momento da inicialização) [1] e ativo [2] . O Certbot verifica se há necessidade de renovar algum certificado SSL após apenas 11 minutos (conforme imagem a seguir) e renova os certificados SSL que estão prestes a expirar [3] .

  Uma captura de tela de um computador Descrição gerada automaticamente

Para verificar manualmente se algum certificado SSL está prestes a expirar e renovar os certificados SSL expirados, execute o seguinte comando:

$ sudo renovação do certbot

No nosso caso, nenhum certificado SSL está prestes a expirar. Portanto, o Certbot não tentou renovar nenhum certificado SSL.

Para forçar o Certbot a renovar o certificado SSL de um domínio específico (digamos *.nodekite.com), execute o seguinte comando:

$ sudo certbot certonly --force-renovar -d * .nodekite.com

Pressione “1” e pressione para selecionar a primeira opção (para validação de DNS usando CloudFlare DNS).

  Uma captura de tela de um computador Descrição gerada automaticamente

O certificado SSL deve ser renovado.

Conclusão

Para obter um certificado SSL Let's Encrypt usando a validação DNS CloudFlare usando Certbot, você precisa de acesso ao token API CloudFlare. Neste artigo, mostramos como criar um token API CloudFlare para seu domínio e armazená-lo com segurança em seu computador/servidor para que você possa acessá-lo com Certbot quando necessário. Também mostramos como instalar o Certbot e o plugin Certbot CloudFlare DNS nas distribuições Linux mais populares. Mostramos como gerar certificados SSL curinga Let’s Encrypt, bem como certificados SSL para domínios únicos usando validação DNS Certbot e CloudFlare. Por fim, mostramos como renovar os certificados Let’s Encrypt SSL usando Certbot de forma automática e manual.

Referências: