Site com TLS/HTTPS em 5 Minutos com Debian 8 e Let's Encrypt

Instalação e Configuração do Let's Encrypt para fornecimento de certificados a sites no Debian 8

3 minutos de leitura

Já tem um tempo que o Google anunciou que iria priorizar o sites seguros, ou seja, os sites que possuem o HTTPS ativado. Sendo assim, os sites seguros, vão aparecer como os primeiros resultados.

Só isso, já seria um bom motivo para ativar o HTTPS, mas agora tanto o Google (Chrome), quanto a Mozilla (Firefox), vão informar ao usuário, com mais ênfase, se o site é seguro, ou não.

Claro que isso afeta diretamente, somente os sites que possuem login, mas está claro, que a Web está se movendo para sites seguros. Então, mais um motivo para aprender sobre a dupla SSL/HTTPS. O problema com isso, é que sites seguros, exigem certificados SSL, o que até bem pouco tempo atrás, costumava custar dinheiro. Aí que entra o Let’s Encrypt. O Let’s Encrypt é uma iniciativa, para fornecer certificados gratuitos a todos.

Eu já havia trabalhado com certificados pagos, no Ubuntu Fórum - PT e mesmo não sendo um procedimento complicado, ele envolvia vários passos como: gerar uma solicitação CSR, enviar para o emissor do certificado, que então lhe devolveria o certificado gerado. Adicionalmente, ainda teríamos que copiar o certificados para o servidor, alterar as configurações do servidor para ativar o HTTPS, incluindo os dados do certificado para o servidor pudesse usá-lo.

Aí que entra a beleza do Let’s Encrypt, pois ele possui uma série de ferramentas, que facilitam e automatizam, a emissão dos certificados SSL. Com menos de cinco minutos, eu pude ativar os certificados do Let’s Encrypt aqui no site.

Vou cobrir a instalação do Let’s Encrypt somente no Debian 8, porque é o servidor, no qual este site roda. Para outras distribuições, consulte a documentação da mesma. Também vou assumir, que você possui acesso root ao sistema, pré-requisito para continuar a instalação. Também, estou presumindo que seu site já funcione via HTTP.

Como o Let’s Encrypt foi disponibilizado, após o lançamento do Debian 8, temos que ativar o repositório backports.

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

Atualize a lista de pacotes.

sudo apt-get update

Instale o pacote corresponde ao seu servidor Web.

Para o Apache:

sudo apt-get install python-certbot-apache -t jessie-backports

Para o Nginx:

apt-get install python-certbot-nginx -t jessie-backports

Execute o aplicativo certbot que vai emitir e configurar o certificado.

Para o Apache:

sudo certbot --apache

Para o Nginx:

sudo certbot --nginx

Ao final ele exibe uma mensagem, contendo uma URL para o SSL Labs, onde você pode testar e obter mais informações do seu certificado.

Bingo! Seu certificado já está funcionando. Você pode acessar seu site usando https no lugar no http, para ver se o navegar o reconheceu.

Um passo adicional, consiste em mudar a cifra usada no certificado. Atenção, porque isso pode fazer, com que a versão HTTPS de seu site, deixe de funcionar em navegadores antigos. Então, pense duas vezes, antes de mudar a cifra. O intuito de mudar a cifra, é melhorar o ranking do certificado no teste do SSL Labs, onde vamos passar de Overall Rating B para Overall Rating A.

Para o Apache2, edite o arquivo de configuração do seu site. Na instalação padrão do Debian, /etc/apache2/sites-available/000-default.conf, comente a linha atual SSLCipherSuite e logo abaixo inclua a linha:

SSLCipherSuite 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Para o Nginx, edite o arquivo de configuração do seu site. Na instalação padrão do Debian, /etc/nginx/sites-enabled/default, comente a linha atual ssl_ciphers e logo abaixo inclua a linha:

ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256