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:
- Gerenciando seu domínio com CloudFlare DNS
- Instalando o plug-in Certbot e Certbot CloudFlare no Ubuntu/Debian
- Instalando o plug-in Certbot e Certbot CloudFlare no Fedora
- Instalando o plug-in Certbot e Certbot CloudFlare no RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Verificando se o plug-in Certbot e Certbot CloudFlare estão instalados corretamente
- Gerando um token de API CloudFlare
- Armazenando com segurança o token da API CloudFlare no computador/servidor
- Gerando um certificado SSL usando a validação DNS Certbot CloudFlare
- Listando os certificados SSL Let's Encrypt usando Certbot
- Renovando os certificados SSL Let's Encrypt usando Certbot
- Conclusão
- 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
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
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
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 no Fedora.
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
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
O plugin Certbot e Certbot CloudFlare DNS estão sendo instalados. Demora um pouco para ser concluído.
Para aceitar a chave GPG do repositório EPEL, pressione “Y” e depois pressione
Neste ponto, o plugin Certbot e Certbot CloudFlare DNS devem ser instalados.
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ãoSe 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.
Para verificar se o plugin Certbot CloudFlare DNS está instalado em seu computador, execute o seguinte comando:
$ sudo plug-ins do certbotSe o plugin Certbot CloudFlare DNS estiver instalado, você deverá encontrar “dns-cloudflare” na lista de plugins conforme marcado na imagem a seguir:
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] .
Clique em “Usar modelo” na seção “Editar DNS da zona”.
Na seção “Permissão”, conceda a permissão “Editar” para “Zona DNS” selecionando as opções marcadas nos menus suspensos.
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.
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”.
Assim que terminar de configurar seu token API, clique em “Continuar para o resumo”.
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”.
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
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
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
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
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.comPara 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.comSe 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
Pressione “Y” e depois pressione
Pressione “Y” e depois pressione
Um certificado Let’s Encrypt SSL está sendo emitido. Demora um pouco para ser concluído.
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.
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 certbotComo 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] .
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 /
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 secoA ação de renovação automática é simulada para cada um dos certificados Let’s Encrypt SSL que você gerou.
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.
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.timerComo 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] .
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 certbotNo 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
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.