

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
<a name="amazon-lightsail-using-lets-encrypt-certificates-with-nginx"></a>

O Amazon Lightsail facilita a proteção de seus sites e aplicativos SSL/TLS usando balanceadores de carga do Lightsail. No entanto, usar um balanceador de carga do 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 do Let's Encrypt usando o Certbot e integrá-lo à sua instância do Nginx.

 **Índice** 
+  [Etapa 1: Preencher os pré-requisitos ](#complete-the-prerequisites) 
+  [Etapa 2: instalar o Certbot em sua instância do Lightsail ](#install-certbot-on-your-instance) 
+  [Etapa 3: Solicitar um certificado curinga SSL Let's Encrypt ](#request-a-lets-encrypt-certificate) 
+  [Etapa 4: adicionar registros TXT à zona DNS do seu domínio ](#add-a-text-record-to-your-domains-dns-zone-lets-encrypt) 
+  [Etapa 5: Confirme se os registros TXT foram propagados ](#confirm-the-text-records-have-propagated-lets-encrypt) 
+  [Etapa 6: concluir a solicitação do certificado SSL Let's Encrypt ](#complete-the-lets-encrypt-certificate-request) 
+  [Etapa 7: Atualizar a configuração SSL no Nginx e redirecionar o tráfego de HTTP para HTTPS ](#update-ssl-configuration) 
+  [Etapa 8: renovar os certificados Let's Encrypt a cada 90 dias ](#renew-a-lets-encrypt-certificate) 

## Etapa 1: Concluir os pré-requisitos
<a name="complete-the-prerequisites"></a>

Preencha os seguintes pré-requisitos, caso ainda não tenha feito isso:
+  Crie uma instância do Nginx no Lightsail. Para saber mais, consulte [ Criar uma instância](how-to-create-amazon-lightsail-instance-virtual-private-server-vps.md). 
+  Registre um nome de domínio e obtenha acesso administrativo para editar seus registros DNS. Para saber mais, consulte [DNS](understanding-dns-in-amazon-lightsail.md). 
**nota**  
 Recomendamos que você gerencie os registros DNS do seu domínio usando uma zona DNS do Lightsail. Para saber mais, consulte [ Criar uma zona DNS para gerenciar os registros DNS do seu domínio. ](lightsail-how-to-create-dns-entry.md) 
+  Use o terminal SSH baseado em navegador no console do Lightsail para executar as etapas deste tutorial. No entanto, você também pode usar seu próprio cliente SSH, como o PuTTY. Para saber mais sobre como configurar o PuTTY, consulte [ Baixar e configurar o PuTTY para se conectar usando SSH no Amazon Lightsail. ](lightsail-how-to-set-up-putty-to-connect-using-ssh.md) 

## Etapa 2: instalar o Certbot em sua instância do Lightsail
<a name="install-certbot-on-your-instance"></a>

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. ](https://lightsail.aws.amazon.com/)

1. 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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/resource_cards/ssh-quick-connect.png)

1. Depois que sua sessão SSH baseada no navegador Lightsail estiver conectada, digite o seguinte comando para atualizar os pacotes na sua instância:

   ```
   sudo apt-get update
   ```

1. Insira o comando a seguir para instalar o pacote de propriedades de software. Os desenvolvedores do Certbot usam um Arquivo Pessoal de Pacotes (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
   ```
**nota**  
Se você encontrar um `Could not get lock` erro ao executar o `sudo apt-get install` comando, aguarde aproximadamente 15 minutos e tente novamente. Esse erro pode ser causado por um cron job que está usando a ferramenta de gerenciamento de pacotes Apt para instalar atualizações autônomas.

1. Digite o seguinte comando a seguir para atualizar apt para incluir o novo repositório:

   ```
   sudo apt-get update -y
   ```

1. 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
<a name="request-a-lets-encrypt-certificate"></a>

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
   ```

1. 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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/confirm-domain-and-wildcard-variables.png)

1. 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
   ```

1. Insira seu endereço de e-mail quando solicitado, pois ele é usado para avisos de renovação e segurança.

1. Leia os termos de serviço do Let's Encrypt. Quando terminar, pressione Y se você concordar. Se você discordar, não poderá obter um certificado Let's Encrypt.

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

1. O Let's Encrypt agora solicita que você verifique se você possui o 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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/get-TXT-records.png)

## Etapa 4: adicionar registros TXT à zona DNS do domínio
<a name="add-a-text-record-to-your-domains-dns-zone-lets-encrypt"></a>

 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. ](lightsail-how-to-create-dns-entry.md) 

**Para adicionar registros TXT à zona DNS do seu domínio no Lightsail**

1. No painel de navegação esquerdo, escolha **Domínios e DNS**.

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

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

1. Escolha **Adicionar registro**.

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

1.  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. 

1. Escolha **Salvar**.

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

1.  Mantenha a janela do navegador do console Lightsail aberta — você retornará a ela posteriormente neste tutorial. Continue na [ próxima seção ](#confirm-the-text-records-have-propagated-lets-encrypt) deste tutorial. 

## Etapa 5: confirme se os registros TXT foram propagadas
<a name="confirm-the-text-records-have-propagated-lets-encrypt"></a>

 Use o MxToolbox utilitário para confirmar se os registros TXT se propagaram 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](https://mxtoolbox.com/TXTLookup.aspx). 

1.  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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/mxtoolbox-text-record-lookup.png)

1. Escolha **Pesquisa de TXT** para executar a verificação.

1. 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](#complete-the-lets-encrypt-certificate-request) deste tutorial.   
![Confirmação de que registros TXT foram propagados.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/mxtoolbox-propagated-text-record-lookup.png)
   +  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
<a name="complete-the-lets-encrypt-certificate-request"></a>

 Volte para a sessão SSH baseada no navegador Lightsail para sua instância e conclua a solicitação do certificado Let's Encrypt. O Certbot salva seu certificado SSL, sua cadeia e seus arquivos de chave em um diretório específico em 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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/certificate-request-success.png)

    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}}/`. 

1.  Anote a data de expiração especificada na mensagem. Você pode usá-la para renovar seu certificado até essa data.   
![Let's Encrypt a data de renovação do certificado.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/certificate-renewal-date.png)

## Etapa 7: Atualizar a configuração SSL no Nginx e redirecionar o tráfego de HTTP para HTTPS
<a name="update-ssl-configuration"></a>

**Para atualizar a configuração SSL no default.conf do Nginx**

1.  Na sessão SSH da sua instância do 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 de instância do Nginx foram interrompidos.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/nginx-stop-services.png)

1.  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}}
   ```

1. 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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/confirm-domain-variable.png)

1. Execute o comando abaixo para alterar a configuração SSL:
**nota**  
Se você fechou a janela do terminal SSH baseado em navegador desde a configuração da `DOMAIN` variável na Etapa 3, execute `DOMAIN={{example.com}}` novamente, {{example.com}} substituindo-a 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
   ```

1.  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.](https://docs.aws.amazon.com/pt_br/lightsail/latest/userguide/images/instances/lets-encrypt/nginx-start-services.png)

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

## Etapa 8: renovar os certificados Let's Encrypt a cada 90 dias
<a name="renew-a-lets-encrypt-certificate"></a>

 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: Solicite um certificado curinga SSL Let's Encrypt. ](#request-a-lets-encrypt-certificate) 