Como Configurar o Certificado SSL Gratuito “Let’s Encrypt” no Nginx (Ubuntu)
Se você leu muitos artigos sobre dicas de privacidade, certamente já encontrou uma dica que o pede para instalar a extensão “HTTPS em toda parte” para que ela redirecione automaticamente você para a versão HTTPS do site sempre que possível. O problema é que a extensão HTTPS em toda parte funciona apenas quando o site que você está visitando implementou SSL, e para a maioria dos webmasters, isso pode ser uma tarefa difícil (e cara) por si só. Felizmente, com o movimento Let’s Encrypt, agora é mais fácil para os webmasters adicionar certificados SSL aos seus sites.
No passado (e atualmente), configurar um certificado SSL requer que você primeiro gere uma chave privada em seu servidor, depois compre um certificado SSL da Autoridade Certificadora (o que pode ser caro) e, por fim, configure-o no servidor. Há muita técnica envolvida no processo, e não fazê-lo corretamente tornará o certificado SSL inútil. Com o projeto Let’s Encrypt, pode-se rapidamente adicionar um certificado SSL aos seus sites sem nenhum custo. E sendo apoiado por grandes empresas da indústria, como Mozilla, Akamai, Cisco, EFF e Google, ele é suportado pela maioria dos navegadores e sistemas operacionais.
Neste tutorial, vamos passar pelos passos para configurar o certificado SSL Let’s Encrypt no servidor Nginx. Estamos usando um servidor Ubuntu 14.04 para este tutorial e assumimos que você está usando um servidor Nginx Ubuntu em funcionamento. As instruções podem diferir para o servidor Ubuntu 16.04.
Instalar Let’s Encrypt
Primeiro, para instalar o Let’s Encrypt, você precisará do git para cloná-lo do seu repositório git. Instale o git com o seguinte comando:
sudo apt-get install gitUma vez instalado, clone o repositório do Let’s Encrypt:
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencryptConfigurando o ambiente
Antes de prosseguir para instalar e configurar o certificado SSL, é importante permitir o acesso à pasta .well-known no diretório raiz da web. Por padrão, todos os arquivos e pastas com um “.” na frente do nome do arquivo estão ocultos e não acessíveis ao público. No entanto, neste caso, precisaremos fornecer permissão para o público acessar a pasta .well-known, já que é aqui que o Let’s Encrypt armazenará um arquivo especial para validação.
Vá para a pasta de configuração do site Nginx e abra-a (se você tiver um arquivo de configuração personalizado para seu site) ou use a padrão:
cd /etc/nginx/sites-available
sudo nano defaultAdicione as seguintes linhas no bloco do servidor:
location ~ /\.well-known {
allow all;
}Salve (Ctrl + O) e feche (Ctrl + x) o arquivo de configuração.
Teste sua configuração do Nginx:
sudo nginx -tSe toda a configuração estiver correta, recarregue a configuração:
sudo service nginx reloadGerar um Certificado SSL
Agora que você concluiu a configuração do Nginx, a próxima coisa é instalar o certificado SSL.
Vá para a pasta do Let’s Encrypt:
cd /opt/letsencryptExecute o seguinte comando para gerar o certificado:
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.comHá algumas coisas a serem alteradas aqui:
- Altere o
webroot-pathpara o caminho do diretório raiz do seu site. O padrão é “/usr/share/nginx/html”, mas sua configuração pode diferir. - Altere “example.com” para o seu próprio nome de domínio. Note que “example.com” e “www.example.com” são dois domínios diferentes. Se você quiser que o certificado suporte vários domínios, basta adicionar
-d example1.comao final do comando. Por exemplo, para configurar um certificado SSL para os domínios “example.com”, “www.example.com”, “example1.com” e “www.example1.com”, use o seguinte comando:
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com -d example1.com -d www.example1.comNa primeira execução, o script instalará um monte de arquivos Python em seu sistema. Uma vez que isso esteja completo, ele começará o processo de geração do certificado. Primeiro, ele pedirá seu endereço de email:

Depois disso, você será solicitado a ler os Termos de Serviço no site do Let’s Encrypt. Selecione “Concordo”.

Se você ver a seguinte mensagem:
NOTAS IMPORTANTES:
- Parabéns! Seu certificado e a cadeia foram salvos em
/etc/letsencrypt/live/example.com/fullchain.pem. Seu cert
expirará em 2016-10-02. Para obter uma nova versão deste
certificado no futuro, basta executar letsencrypt-auto novamente.
Para renovar *todos* os seus certificados de forma não interativa, execute
"letsencrypt-auto renew"
- Se você gosta do Certbot, considere apoiar nosso trabalho doando para:
ISRG / Let's Encrypt: https://letsencrypt.org/donate
EFF: https://eff.org/donate-leIsso significa que você gerou com sucesso um certificado SSL para seu(s) site(s). Se em vez disso você vir uma mensagem de erro, corrija o erro e tente novamente.
Ativando o certificado SSL para seu site
Agora que você gerou o certificado SSL, é hora de ativá-lo para seu site.
Retorne à pasta de configuração do Nginx e abra o arquivo de configuração do site:
cd /etc/nginx/sites-available
sudo nano defaultCrie um novo bloco de servidor e adicione a seguinte configuração dentro do bloco:
server {
server_name example.com www.example.com;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}Salve e feche o arquivo.
Nota: o acima é uma versão simplificada do bloco de configuração do Nginx. Você deve adicionar sua própria configuração personalizada ao bloco.
Por último, teste a configuração:
sudo nginx -tSe tudo estiver correto, recarregue o Nginx:
sudo service nginx reloadÉ isso. Você configurou com sucesso um certificado SSL para seus sites. Agora você pode carregar a versão “https” da sua URL para ver em ação.
Renovação Automática de um Certificado SSL Let’s Encrypt
Ao contrário da maioria dos certificados SSL comerciais que são válidos por um mínimo de um ano, um certificado SSL do Let’s Encrypt é válido apenas por três meses. Após esse tempo, você precisará renovar para continuar usando-o. O Let’s Encrypt vem com uma opção de renew, para que você possa facilmente renovar seus certificados sem passar por toda a instalação novamente. As seguintes instruções mostram como configurar um trabalho cron para renovar automaticamente seu certificado SSL.
Ainda no seu servidor, abra o crontab:
sudo crontab -eAdicione as seguintes linhas:
00 0 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
05 0 * * 1 /etc/init.d/nginx reloadAs linhas acima verificarão a data de expiração dos seus certificados SSL toda segunda-feira à meia-noite e os renovarão se estiverem próximos da expiração. Também recarregará o Nginx (às 00h05) para garantir que o certificado renovado esteja em uso.
Salve e feche o crontab.
Conclusão
Se você estiver executando um site pequeno e estiver interessado em adicionar SSL ao seu site, o Let’s Encrypt é uma ótima opção para adicionar credibilidade ao seu site. É (relativamente) fácil de configurar e não custa nada (gratuito, como cerveja), então não há razão para não usá-lo. No entanto, como ele fornece apenas um certificado com Validação de Domínio (DV) (o tipo mais básico de certificado SSL), para as empresas que exigem certificados SSL com Validação de Organização (OV) ou Validação Estendida (EV), um certificado SSL comercial provavelmente é o caminho a seguir.