View a markdown version of this page

Habilite HTTPS em sua instância Nginx com Let's Encrypt e Certbot - Amazon Lightsail

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Habilite HTTPS em sua instância Nginx com Let's Encrypt e Certbot

O Amazon Lightsail facilita a proteção de seus sites e aplicativos com o SSL/TLS uso dos balanceadores de carga Lightsail. No entanto, usar um balanceador de carga Lightsail geralmente não é a escolha certa. Talvez seu site não precise da escalabilidade ou da tolerância a falhas que os load balancers fornecem, ou talvez você esteja otimizando pelo custo.

No último caso, você pode considerar o uso do Let's Encrypt para obter um certificado SSL gratuito. Se esse for o caso, não há problema. Você pode integrar esses certificados às instâncias do Lightsail. Este tutorial mostra como solicitar um certificado curinga Let's Encrypt usando o Certbot e integrá-lo à sua instância do Nginx.

Índice

Etapa 1: Concluir os pré-requisitos

Preencha os seguintes pré-requisitos, caso ainda não tenha feito isso:

Etapa 2: instalar o Certbot na sua instância do Lightsail

O Certbot é um cliente usado para solicitar um certificado do Let's Encrypt e implantá-lo em um servidor web. O Let's Encrypt usa o protocolo ACME para emitir certificados, e o Certbot é um ACME-enabled cliente que interage com o Let's Encrypt.

Para instalar o Certbot em sua instância do Lightsail
  1. Faça login no console do Lightsail.

  2. Na guia Instâncias da página inicial do Lightsail, escolha o ícone de conexão rápida SSH para a instância à qual você deseja se conectar.

    Conexão rápida SSH na página inicial do Lightsail.
  3. Depois que sua sessão SSH baseada no navegador Lightsail estiver conectada, insira o seguinte comando para atualizar os pacotes na sua instância:

    sudo apt-get update
  4. Insira o comando a seguir para instalar o pacote de propriedades de software. Os desenvolvedores do Certbot usam um Personal Package Archive (PPA) para distribuir o Certbot. O pacote de propriedades de software torna o trabalho com PPAs mais eficiente.

    sudo apt-get install software-properties-common -y
  5. Digite o seguinte comando a seguir para atualizar apt para incluir o novo repositório:

    sudo apt-get update -y
  6. Insira o comando a seguir para instalar o Certbot:

    sudo apt-get install certbot -y

    O Certbot agora está instalado na sua instância do Lightsail.

Etapa 3: solicitar um certificado curinga SSL da Let’s Encrypt

Comece o processo de solicitação de um certificado do Let's Encrypt. Usando o Certbot, solicite um certificado curinga, que permite que você use um único certificado para um domínio e seus subdomínios. Por exemplo, um único certificado curinga funciona para o domínio de nível superior example.com e os subdomínios blog.example.com e stuff.example.com.

Para solicitar um certificado curinga SSL Let's Encrypt
  1. Na mesma janela de terminal SSH baseada em navegador usada na etapa anterior deste tutorial, insira os comandos a seguir para definir uma variável de ambiente para seu domínio. Lembre-se de substituir domain pelo nome do seu nome de registro registrado.

    DOMAIN=domain WILDCARD=*.$DOMAIN

    Exemplo:

    DOMAIN=example.com WILDCARD=*.$DOMAIN
  2. Digite o seguinte comando para confirmar que as variáveis retornarão os valores corretos:

    echo $DOMAIN && echo $WILDCARD

    Será exibido um resultado semelhante ao seguinte:

    Confirme as variáveis de ambiente do domínio.
  3. Digite o seguinte comando para iniciar o Certbot no modo interativo. Esse comando informa ao Certbot para usar um método de autorização manual com desafios de DNS para verificar a propriedade do domínio. Ele solicita um certificado curinga para seu domínio de nível superior, bem como seus subdomínios.

    sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  4. Insira seu endereço de e-mail quando solicitado, pois ele é usado para avisos de renovação e segurança.

  5. Leia os termos de serviço do Let's Encrypt. Ao concluir, pressione A se você concorda. Se você discordar, não poderá obter um certificado Let's Encrypt.

  6. Responda adequadamente ao prompt para compartilhar seu endereço de e-mail e o aviso sobre o registro do seu endereço IP.

  7. O Let's Encrypt agora solicita que você verifique se você é proprietário do domínio especificado. Você pode fazer isso adicionando registros TXT para os registros DNS para seu domínio. Um conjunto de valores de registro TXT é fornecido conforme mostrado no seguinte exemplo:

    nota

    A Let's Encrypt pode fornecer um ou vários registros TXT que devem ser usados para verificação. Neste exemplo, recebemos dois registros TXT para usar na verificação.

    Registros TXT para certificados da Let's Encrypt.

Etapa 4: adicionar registros TXT à zona DNS do domínio

A adição de um registro TXT à zona DNS do seu domínio verifica se você possui o domínio. Para fins de demonstração, usamos a zona DNS do Lightsail. No entanto, as etapas podem ser semelhantes para outras zonas de DNS normalmente hospedadas por registradores de domínios.

nota

Para saber mais sobre como criar uma zona DNS do Lightsail para seu domínio, consulte Criação de uma zona DNS para gerenciar os registros DNS do seu domínio no Lightsail.

Para adicionar registros TXT à zona DNS do seu domínio no Lightsail
  1. No painel de navegação esquerdo, escolha Domínios e DNS.

  2. Na seção Zonas DNS da página, escolha a zona DNS para o domínio especificado na solicitação de certificado Certbot.

  3. No editor de zonas DNS, escolha a guia DNS records (Registros DNS).

  4. Escolha Adicionar registro.

  5. No menu suspenso Record type (Tipo de registro), escolha TXT record (Registro TXT).

  6. Insira os valores especificados pela solicitação de certificado Let's Encrypt nos campos Record name (Nome do registro) e Responds with (Responde com).

    nota

    O console Lightsail preenche previamente a parte do ápice do seu domínio. Por exemplo, se você deseja adicionar o _acme-challenge.example.com subdomínio, então você só precisa entrar _acme-challenge na caixa de texto e o Lightsail adiciona a .example.com porção para você quando você salvar o registro.

  7. Escolha Salvar.

  8. Repita as etapas de 4 a 7 para adicionar o segundo conjunto de registros TXT especificado pela solicitação de certificado Let's Encrypt.

  9. Mantenha a janela do navegador do console Lightsail aberta — você voltará a ela posteriormente neste tutorial. Continue na próxima seção deste tutorial.

Etapa 5: confirme se os registros TXT foram propagadas

Use o MxToolbox utilitário para confirmar se os registros TXT foram propagados para o DNS da Internet. A propagação de registro DNS pode demorar um pouco, dependendo do provedor de hospedagem de DNS configurado e a vida útil (TTL) para seus registros DNS. É importante que você conclua esta etapa e confirme se os registros TXT foram propagados antes de continuar sua solicitação de certificado Certbot. Caso contrário, a solicitação de certificado falhará.

Para confirmar que os registros TXT foram propagados para o DNS da Internet
  1. Abra uma nova janela do navegador e acesse https://mxtoolbox.com/TXTLookup.aspx.

  2. Insira o seguinte texto na caixa de texto. Substitua domain pelo seu domínio.

    _acme-challenge.domain

    Exemplo:

    _acme-challenge.example.com
    MxToolbox Pesquisa de registros TXT.
  3. Escolha Pesquisa de TXT para executar a verificação.

  4. Uma das seguintes respostas ocorre:

    • Se os registros TXT tiverem sido propagados para o DNS da Internet, você verá uma resposta semelhante à mostrada na captura de tela a seguir. Feche a janela do navegador e prossiga para a próxima seção deste tutorial.

      Confirmação de que registros TXT foram propagados.
    • Se os registros TXT não tiverem sido propagados para o DNS da Internet, você verá uma resposta DNS Record not found (Registro DNS não encontrado). Confirme se você adicionou os registros DNS corretos para a zona DNS dos seus domínios. Se você adicionou os registros corretos, aguarde um pouco mais tempo para permitir que os registros de DNS do seu domínio TXT sejam propagados e execute a pesquisa novamente.

Etapa 6: conclua a solicitação de certificado SSL da Let’s Encrypt

Volte para a sessão SSH baseada no navegador Lightsail para sua instância e conclua a solicitação de certificado Let's Encrypt. O Certbot salva seus arquivos de certificado, cadeia e chave SSL em um diretório específico na sua instância.

Para concluir a solicitação de certificado SSL da Let’s Encrypt
  1. Na sessão SSH baseada no navegador Lightsail para sua instância, pressione Enter para continuar sua solicitação de certificado SSL Let's Encrypt. Se bem-sucedido, uma resposta semelhante à mostrada na captura de tela a seguir aparecerá:

    Solicitação de certificado Let's Encrypt bem-sucedida.

    A mensagem confirma que os arquivos de certificado, de cadeia e de chave estão armazenados no diretório /etc/letsencrypt/live/domain/. Substitua domain pelo seu domínio, como /etc/letsencrypt/live/example.com/.

  2. Anote a data de expiração especificada na mensagem. Você pode usá-la para renovar seu certificado até essa data.

    Data de renovação do certificado Let's Encrypt.

Etapa 7: atualizar a configuração SSL no Nginx e redirecionar o tráfego de HTTP para HTTPS

Para atualizar a configuração SSL no default.conf do Nginx
  1. Na sessão SSH da sua instância Nginx, digite o seguinte comando para interromper os serviços subjacentes:

    sudo systemctl stop nginx sudo systemctl stop mariadb sudo systemctl stop php8.2-fpm

    Você verá uma resposta semelhante à seguinte:

    Os serviços da instância Nginx foram interrompidos.
  2. Digite o comando a seguir para definir uma variável de ambiente para o seu domínio. Você pode copiar e colar comandos de forma mais eficiente para vincular os arquivos de certificado. Lembre-se de substituir domain pelo nome do seu registro registrado.

    DOMAIN=domain

    Exemplo:

    DOMAIN=example.com
  3. Digite o seguinte comando para confirmar que as variáveis retornarão os valores corretos:

    echo $DOMAIN

    Será exibido um resultado semelhante ao seguinte:

    Confirme a variável de ambiente do domínio.
  4. Execute o comando abaixo para alterar a configuração do SSL:

    nota

    Se você fechou a janela do terminal SSH baseado no navegador desde a configuração da DOMAIN variável na Etapa 3, execute DOMAIN=example.com novamente, example.com substituindo pelo seu domínio.

    sudo sed \ -i -e "s|ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem|ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem|g" \ -i -e "s|ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key|ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem|g" \ /etc/nginx/conf.d/default.conf
  5. Depois de sobrescrever o default.conf arquivo, execute os comandos abaixo para verificar a configuração e reiniciar o Nginx

    sudo nginx -t sudo systemctl restart nginx sudo systemctl restart mariadb sudo systemctl restart php8.2-fpm

    Será exibido um resultado semelhante ao seguinte:

    Os serviços de instância do Nginx foram iniciados.

    Sua instância Nginx agora está configurada para usar criptografia SSL e o tráfego é redirecionado de HTTP para HTTPS

Etapa 8: renove os certificados do Let's Encrypt a cada 90 dias

Os certificados da Let's Encrypt são válidos por 90 dias. Os certificados podem ser renovados 30 dias antes da data de expiração. Para renovar o certificado Let's Encrypt, repita a Etapa 3: Solicitar um certificado curinga SSL do Let's Encrypt.