BLOG | NGINX

Atualizar: Usando certificados SSL/TLS gratuitos Let’s Encrypt com NGINX

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Amir Rawdat Miniatura
Amir Rawdat
Publicado em 28 de janeiro de 2021

Editor – A postagem do blog detalhando o procedimento original para usar o Let’s Encrypt com NGINX (de fevereiro de 2016) redireciona para cá. As instruções nessa postagem estão obsoletas.

Esta postagem foi atualizada para eliminar a dependência do certbot‑auto , que a Electronic Frontier Federation (EFF) tornou obsoleto no Certbot 1.10.0 para Debian e Ubuntu e no Certbot 1.11.0 para todos os outros sistemas operacionais. Para obter detalhes adicionais e métodos alternativos de instalação, consulte esta postagem da EFF .

Veja também nossa postagem no blog do nginx.conf 2015, na qual Peter Eckersley e Yan Zhu da Electronic Frontier Foundation apresentam a então nova autoridade de certificação Let's Encrypt .

É bem sabido que a criptografia SSL/TLS do seu site leva a classificações de pesquisa mais altas e melhor segurança para seus usuários. No entanto, há uma série de barreiras que impedem os proprietários de sites de adotar o SSL.

Duas das maiores barreiras são o custo e os processos manuais envolvidos na obtenção de um certificado. Mas agora, com o Let's Encrypt , elas não são mais uma preocupação. O Let's Encrypt disponibiliza gratuitamente a criptografia SSL/TLS para todos.

Let’s Encrypt é uma autoridade de certificação (CA) gratuita, automatizada e aberta. Sim, está certo: Certificados SSL/TLS gratuitos. Os certificados emitidos pela Let’s Encrypt são confiáveis pela maioria dos navegadores hoje, incluindo navegadores mais antigos, como o Internet Explorer no Windows XP SP3. Além disso, o Let’s Encrypt automatiza totalmente a emissão e a renovação de certificados.

Nesta postagem do blog, abordamos como usar o cliente Let’s Encrypt para gerar certificados e como configurar automaticamente o NGINX Open Source e o NGINX Plus para usá-los.

Como o Let’s Encrypt funciona

Antes de emitir um certificado, o Let’s Encrypt valida a propriedade do seu domínio. O cliente Let’s Encrypt, em execução no seu host, cria um arquivo temporário (um token) com as informações necessárias. O servidor de validação Let’s Encrypt então faz uma solicitação HTTP para recuperar o arquivo e valida o token, o que verifica se o registro DNS do seu domínio é resolvido para o servidor que executa o cliente Let’s Encrypt.

Pré-requisitos

Antes de começar com o Let’s Encrypt, você precisa:

  • Tenha o NGINX ou NGINX Plus instalado.
  • Possuir ou controlar o nome de domínio registrado para o certificado. Se você não tiver um nome de domínio registrado, poderá usar um registrador de nomes de domínio, como GoDaddy ou dnsexit .
  • Crie um registro DNS que associe seu nome de domínio e o endereço IP público do seu servidor.

Agora você pode configurar facilmente o Let's Encrypt com o NGINX Open Source ou o NGINX Plus (para facilitar a leitura, de agora em diante nos referiremos simplesmente ao NGINX ).

Observação : Testamos o procedimento descrito nesta postagem do blog no Ubuntu 16.04 (Xenial).

1. Baixe o Let’s Encrypt Client

Primeiro, baixe o cliente Let's Encrypt, certbot .

Conforme mencionado acima, testamos as instruções no Ubuntu 16.04, e estes são os comandos apropriados para essa plataforma:

$ apt-get update $ sudo apt-get install certbot $ apt-get install python-certbot-nginx

Com o Ubuntu 18.04 e posterior, substitua a versão Python 3:

$ apt-get update $ sudo apt-get install certbot $ apt-get install python3-certbot-nginx

2. Configurar NGINX

O certbot pode configurar automaticamente o NGINX para SSL/TLS. Ele procura e modifica o bloco do servidor na sua configuração NGINX que contém uma diretiva server_name com o nome de domínio para o qual você está solicitando um certificado. No nosso exemplo, o domínio é www.example.com .

  1. Supondo que você esteja começando com uma nova instalação do NGINX, use um editor de texto para criar um arquivo no diretório /etc/nginx/conf.d chamado domain‑name .conf (portanto, em nosso exemplo, www.example.com.conf ).

  2. Especifique seu nome de domínio (e variantes, se houver) com a diretiva server_name :

    servidor { ouvir 80 default_server;
    ouvir [::]:80 default_server;
    raiz /var/www/html;
    nome_do_servidor exemplo.com www.exemplo.com;
    }
  3. Salve o arquivo, execute este comando para verificar a sintaxe da sua configuração e reinicie o NGINX:

    $ nginx -t && nginx -s recarregar

3. Obtenha o certificado SSL/TLS

O plug-in NGINX para certbot cuida da reconfiguração do NGINX e do recarregamento de sua configuração sempre que necessário.

  1. Execute o seguinte comando para gerar certificados com o plug-in NGINX:

    $ sudo certbot --nginx -d exemplo.com -d www.example.com
  2. Responda às solicitações do certbot para configurar suas configurações de HTTPS, o que envolve inserir seu endereço de e-mail e concordar com os termos de serviço do Let's Encrypt.

  3. Quando a geração do certificado é concluída, o NGINX é recarregado com as novas configurações. O certbot gera uma mensagem indicando que a geração do certificado foi bem-sucedida e especificando o local do certificado no seu servidor.

    Parabéns! Você habilitou com sucesso https://example.com e https://www.example.com 
    -------------------------------------------------------------------------------------
    NOTAS IMPORTANTES: 
    
    Parabéns! Seu certificado e cadeia foram salvos em: 
    /etc/letsencrypt/live/example.com/fullchain.pem 
    Seu arquivo de chave foi salvo em: 
    /etc/letsencrypt/live/example.com//privkey.pem
    Seu certificado irá expirar em 2017-12-12.

    Observação : Os certificados Let's Encrypt expiram após 90 dias (em 12/12/2017 no exemplo). Para obter informações sobre a renovação automática de certificados, consulte Renovação automática de certificados Let's Encrypt abaixo.

Se você olhar para o nome de domínio .conf , verá que o certbot o modificou:

server { listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;

listen 443 ssl; # gerenciado pelo Certbot

# certificado RSA
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # gerenciado pelo Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # gerenciado pelo Certbot

include /etc/letsencrypt/options-ssl-nginx.conf; # gerenciado pelo Certbot

# redirecionar tráfego não https para https
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # gerenciado pelo Certbot
}

4. Renovar automaticamente os certificados Let’s Encrypt

Os certificados Let's Encrypt expiram após 90 dias. Recomendamos que você renove seus certificados automaticamente. Aqui, adicionamos uma tarefa cron a um arquivo crontab existente para fazer isso.

  1. Abra o arquivo crontab .

    $ crontab -e
  2. Adicione o comando certbot para ser executado diariamente. Neste exemplo, executamos o comando todos os dias ao meio-dia. O comando verifica se o certificado no servidor irá expirar nos próximos 30 dias e o renova em caso afirmativo. A diretiva --quiet informa ao certbot para não gerar saída.

    0 12 * * * /usr/bin/certbot renew --quiet
  3. Salve e feche o arquivo. Todos os certificados instalados serão renovados e recarregados automaticamente.

  4. Resumo

    Instalamos o agente Let’s Encrypt para gerar certificados SSL/TLS para um nome de domínio registrado. Configuramos o NGINX para usar os certificados e configurar renovações automáticas de certificados. Com os certificados Let’s Encrypt para NGINX e NGINX Plus, você pode ter um site simples e seguro instalado e funcionando em minutos.

    Para experimentar o Let's Encrypt com NGINX Plus, comece hoje mesmo seu teste gratuito de 30 dias ou entre em contato conosco para discutir seus casos de uso .

    Documentação relacionada

    Protegendo o tráfego HTTP para servidores upstream
    Protegendo o tráfego TCP para servidores upstream
    Terminação NGINX SSL


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."