Boteco Digital

Let’s Encrypt – Certificados SSL/TLS gratuitos

Semana passada, de 13 à 16 de Julho, aconteceu em Porto Alegre o FISL(Fórum Internacional de Software Livre) onde tive a grande oportunidade de realizar algumas atividades pela Mozilla Brasil como voluntário. Umas das atividades foi sobre Let’s Encrypt, então resolvi escrever este artigo para apresentar o Let’s Encrypt a quem ainda não conhece e mostrar como é simples implementá-lo.

Falando um pouco da história, o projeto foi iniciado em 2012 pela Mozilla em conjunto com a EFF(Electronic Frontier Foundation) e anunciado para o público em 2014. Em Setembro de 2015 o primeiro certificado foi gerado e a partir de Outubro de 2015 os certificados gerados pela Let’s Encrypt já eram aceitos pelos maiores browsers. Durante todo o processo de estruturação do Let’s Encrypt várias empresas se tornaram apoiadoras do projeto como: Akamai, Cisco, Facebook, Google, IdenTrust e muitas outras.

O principal objetivo do Let’s Encrypt é disponibilizar certificados SSL/TLS para todos, seja para uma pessoas física, empresa ou instituição, totalmente gratuitos e sem burocracia.

“Acabou o tempo em que era preciso pagar valores absurdos para obter um certificado SSL válido, agora com o Lets Encrypt e com apenas 1 comando você consegue um certificado válido e reconhecido por todos os navegadores e aplicações assim como um certificado SSL normal.” – Samuel Moares

Validação do Domínio

O Let’s Encrypt identifica o administrador do servidor por uma chave pública. Na primeira interação do agente do Let’s Encrypt instalado no cliente com o servidor do Let’s Encrypt, o agenre gera um novo par de chaves e prova para a Let’s Encrypt CA(Certificate Authority) que o servidor controla um ou mais domínios.

Para iniciar o processo o agente pergunta a Let’s Encrypt CA o que deve ser feito na sequência para provar que o servidor controla o domínio, por exemplo, exemplo.com. Há diferentes formas de o agente provar que o servidor controla este domínio. Por exemplo o Let’s Encrypt CA pode permitir ao agente escolher entre:

  • Prover um registro DNS no exemplo.com, ou
  • Prover um recurso HTTP em uma URl bem conhecida em https://exemplo.com

Ao longo destes passos, a Let’s Encrypt CA também prove um número arbitrário que o agente deve assinar com seu par de chaves privadas para provar que ele controla o par de chaves.

Let's encrypt como funciona

O agente completa uma das tarefas. Vamos dizer que o agente era capaz de realizar a segunda tarefa acima, então ela cria um arquivo em um diretório especificado no site https://exemplo.com.
O agente também assina o número arbitrário fornecido com seu par de chaves. Uma vez que o agente completar estas tarefas ele notifica a Let’s Encrypt CA que está pronto para completar a validação.

Então é a vez da Let’s Encrypt CA verificar se as tarefas foram concluídas com um resultado satisfatório. A Let’s Encrypt CA verifica a assinatura do número arbitrário fornecido, baixa o arquivo gerado do servidor web e verifica se ele contem o conteúdo esperado.

Representação autenticação do Let's Encrypt

Se a assinatura do número arbitrário fornecido for válida e as tarefas concluídas, então o agente identificado pela chave pública é autorizado a baixar e instalar certificado para o domínio exemplo.com.

Limites a serem respeitados

  • 100 nomes por certificado
  • 20 certificados por domínio/semana
  • 5 domínios por semana

Na prática com Apache

Vamos colocar a mão na massa e ver na pratica como é simples!
Os passos abaixo consideram apenas o processo para gerar e instalar o certificado, considerando que seu servidor já funciona perfeitamente com HTTP.

Dica: É necessário especificar a porta no Virtual Host para funcionar corretamente.

1º) Clonar o repositório do Let’s Encrypt:

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

2º) Entrar no diretório:

cd /opt/letsencrypt

3º) Executar o agente para obter e instalar o certificado:
Para um único domínio:

./letsencrypt-auto --apache -d exemplo.com

Para mais domínios:

./letsencrypt-auto --apache -d exemplo.com -d exemplo1.com -d exemplon.com

4º) Se tudo ocorrer bem será solicitado um e-mail para o qual serão enviadas as notificações.

5º) Em seguida você deverá escolher entre utilizar apenas HTTPS ou permitir HTTP e HTTPS.

Ao chegar neste ponto sem erros significa que seu certificado já foi instalado com sucesso. Você também pode encontrá-lo em /etc/letsencrypt/live. É possível verificar o status do seu certificado em: https://www.ssllabs.com/ssltest/analyze.html?d=exemplo.com&latest (Substituindo exemplo.com pelo seu domínio)

Para renovar o(s) certificados basta executar:

./letsencrypt-auto renew

Os certificados são válidos por 90 dias, você pode agendar uma tarefa para executar este comando a cada 89 dias, como por exemplo no CronTab.

O objetivo deste artigo que era dar uma visão geral do Let’s Encrypt e mostrar um exemplo simples de implementação, existem outros cenários para implementação do Let’s Encrypt como servidores Nginx, aplicações Node.js e muitos outros. Pretendo escrever mais artigos sobre a implementação nestes outros cenários.

Por hoje era isto pessoal, nos vemos em outros artigos!

Categorias Certificados Digitais Linux

Graduando em Engenharia de Computação pela UFPel, entusiasta de Software Livre, voluntário na Comunidade Mozilla Brasil e coordenador do FLISoL Pelotas, atua como desenvolvedor Full Stack. Atualmente engajado para a abertura do Firefox Student Ambassadors Club UFPel.

Outros posts do autor
comments powered by Disqus