Como usar o modo autônomo do Certbot para recuperar os certificados SSL Let’s Encrypt no Ubuntu 18.04

Introdução

Let’s Encrypt é um serviço que oferece certificados SSL gratuitos por meio de uma API automatizada. O cliente Let’s Encrypt mais popular é o Certbot da EFF.

O Certbot oferece várias maneiras de validar seu domínio, buscar certificados e configurar automaticamente o Apache e o Nginx. Neste tutorial, discutiremos o modo autônomo do Certbot e como usá-lo para proteger outros tipos de serviços, como um servidor de e-mail ou um corretor de mensagens como o RabbitMQ.

Não discutiremos os detalhes da configuração SSL, mas quando terminar, você terá um certificado válido que é renovado automaticamente. Além disso, você poderá automatizar o recarregamento de seu serviço para retirar o certificado renovado.

Pré-requisitos

Antes de iniciar este tutorial, você precisará:

  • Um servidor Ubuntu 18.04 com um usuário habilitado para sudo não root e configuração de firewall básica, conforme detalhado neste tutorial de configuração do servidor Ubuntu 18.04.
  • Um nome de domínio apontado para o seu servidor, que você pode realizar seguindo “How to Set Up a Host Name with DigitalOcean.” Este tutorial usará example.com por toda parte.
  • A porta 80 ou 443 não deve ser usada em seu servidor. Se o serviço que você está tentando proteger está em uma máquina com um servidor da web que ocupa ambas as portas, você precisará usar um modo diferente, como o modo webroot do Certbot.

Etapa 1 – Instalando o Certbot

O Ubuntu inclui o cliente Certbot em seu repositório padrão, mas está um pouco desatualizado. Em vez disso, vamos instalá-lo a partir do Ubuntu PPA oficial da Certbot, ou Personal Package Archive. Esses são repositórios alternativos que empacotam softwares mais recentes ou mais obscuros. Primeiro, adicione o repositório:

sudo add-apt-repository ppa:certbot/certbot

Você precisará pressionar ENTER para aceitar. Depois, atualize a lista de pacotes para obter as informações do novo pacote do repositório:

sudo apt update

E, finalmente, instale o pacote certbot:

sudo apt install certbot

Agora que temos o Certbot instalado, vamos executá-lo para obter nosso certificado.

Etapa 2 – Executando o Certbot

O Certbot precisa responder a um desafio criptográfico lançado pela API Let’s Encrypt para provar que controlamos nosso domínio. Ele usa as portas 80 (HTTP) ou 443 (HTTPS) para fazer isso. Abra a porta apropriada em seu firewall:

sudo ufw allow 80

Substitua 443 acima se essa for a porta que você está usando. ufw irá fornecer a confirmação de que sua regra foi adicionada:

Rule added
Rule added (v6)

Agora podemos executar o Certbot para obter nosso certificado. Usaremos a opção --standalone para dizer ao Certbot para lidar com o desafio usando seu próprio servidor web integrado. A opção --preferred-challenge instrui o Certbot a usar a porta 80 ou a porta 443. Se estiver usando a porta 80, você quer --preferred-challenge http. Para a porta 443, seria --preferred-challenge tls-sni. Por fim, o sinalizador -d é usado para especificar o domínio para o qual você está solicitando um certificado. Você pode adicionar várias opções -d para cobrir vários domínios em um certificado.

sudo certbot certonly --standalone --preferred-challenges http -d example.com

Ao executar o comando, você será solicitado a inserir um endereço de e-mail e concordar com os termos de serviço. Depois de fazer isso, você verá uma mensagem informando que o processo foi bem-sucedido e onde seus certificados estão armazenados:


IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-10-09. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Temos nossos certificados. Vamos dar uma olhada no que baixamos e como usar os arquivos com nosso software.

Etapa 3 - Configurando Seu Aplicativo

Configurar seu aplicativo para SSL está além do escopo deste artigo, pois cada aplicativo tem diferentes requisitos e opções de configuração, mas vamos dar uma olhada no que o Certbot baixou para nós. Use ls para listar o diretório que contém nossas chaves e certificados:

sudo ls /etc/letsencrypt/live/example.com
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

O arquivo README neste diretório contém mais informações sobre cada um desses arquivos. Na maioria das vezes, você só precisará de dois desses arquivos:

  • privkey.pem: Esta é a chave privada do certificado. Isso precisa ser mantido seguro e secreto, e é por isso que a maior parte do diretório / etc / letsencrypt tem permissões muito restritivas e pode ser acessado apenas pelo usuário root. A maioria das configurações de software se referirá a isso como algo semelhante a ssl-certificate-key ou ssl-certificate-key-file.
  • fullchain.pem: este é o nosso certificado, agrupado com todos os certificados intermediários. A maioria dos softwares usará esse arquivo para o certificado real e fará referência a ele em sua configuração com um nome como 'certificado SSL'.

Para obter mais informações sobre os outros arquivos presentes, consulte a seção “Onde estão meus certificados” dos documentos do Certbot.

Alguns softwares precisarão de seus certificados em outros formatos, em outros locais ou com outras permissões de usuário. É melhor deixar tudo no diretório letsencrypt, e não alterar nenhuma permissão lá (as permissões serão apenas sobrescritas na renovação de qualquer maneira), mas às vezes isso simplesmente não é uma opção. Nesse caso, você precisará escrever um script para mover arquivos e alterar as permissões conforme necessário. Este script precisará ser executado sempre que o Certbot renovar os certificados, sobre o qual falaremos a seguir.

Etapa 4 - Lidar com as renovações automáticas do Certbot

Os certificados da Let’s Encrypt são válidos apenas por noventa dias. Isso é para incentivar os usuários a automatizar seu processo de renovação de certificado. O pacote certbot que instalamos cuida disso para nós, adicionando um script de renovação a /etc/cron.d. Este script é executado duas vezes por dia e renovará qualquer certificado que esteja dentro de trinta dias após a expiração.

Com nossos certificados sendo renovados automaticamente, ainda precisamos de uma maneira de executar outras tarefas após uma renovação. Precisamos pelo menos reiniciar ou recarregar nosso servidor para obter os novos certificados e, conforme mencionado na Etapa 3, podemos precisar manipular os arquivos do certificado de alguma forma para fazê-los funcionar com o software que estamos usando. Este é o objetivo da opção renew_hook do Certbot.

Para adicionar um renew_hook, atualizamos o arquivo de configuração de renovação do Certbot. O Certbot se lembra de todos os detalhes de como você obteve o certificado pela primeira vez e executará as mesmas opções após a renovação. Só precisamos adicionar nosso livro. Abra o arquivo de configuração com seu editor favorito:

sudo nano /etc/letsencrypt/renewal/example.com.conf

Um arquivo de texto será aberto com algumas opções de configuração. Adicione seu gancho na última linha:

renew_hook = systemctl reload rabbitmq

Atualize o comando acima para o que você precisa executar para recarregar seu servidor ou execute seu script de munging de arquivo personalizado. Normalmente, no Ubuntu, você usará principalmente o systemctl para recarregar um serviço. Salve e feche o arquivo e, em seguida, execute uma simulação do Certbot para verificar se a sintaxe está correta:

sudo certbot renew --dry-run

Se você não encontrar erros, está tudo pronto. Certbot está configurado para renovar quando necessário e executar todos os comandos necessários para obter seu serviço usando os novos arquivos.

Conclusão

Neste tutorial, instalamos o cliente Certbot Let’s Encrypt, baixamos um certificado SSL usando o modo autônomo e ativamos renovações automáticas com ganchos de renovação. Isso deve ser um bom começo no uso de certificados Let’s Encrypt com serviços diferentes do seu servidor da web típico.

Para obter mais informações, consulte a documentação do Certbot.

Compartilhe esse post:

Adicionar Comentário

O seu endereço de e-mail não será publicado.