No ano passado (2014), um grupo de especialistas de segurança na Internet da Universidade de Michigan, Mozilla e a Electronic Frontier Foundation criaram uma nova autoridade certificadora (AC) denominada Let’s Encrypt (“Vamos Criptografar”). Além disso, contém o apoio da Cisco, Akamai e outros. Posteriormente, entrou no rol de trabalhos colaborativos da Linux Foundation. O projeto Let’s Encrypt visa emitir certificados digitais SSL/TLS gratuitos para qualquer site que necessitar. Seu primeiro certificado digital foi assinado digitalmente em meados de setembro de 2015. Por fim, a autoridade certificadora Let’s Encrypt promete emissão de certificados sem nenhum custo, transparência, segurança e cooperativismo; já que é uma a iniciativa controlada por várias empresas que possuem o objetivo de beneficiar a comunidade.
Em resumo, o projeto permitirá que qualquer site da internet possa proteger seus usuários com certificados SSL/TLS que criptografam todos os dados enviados entre os usuários e o site. A iniciativa também torna a implementação HTTPS mais fácil para qualquer site ou site de compras online, afim de garantir a segurança dos dados de seus clientes.
Como funciona?
Uma visão geral da sua arquitetura, podemos destacar 2 aspectos importantes:
1 – Protocolo ACME (Automatic Certificate Management Environment) –
Em resumo, ele envolve vários pedidos (ou desafios) para o servidor web onde o certificado está presente. Com base nas respostas, a Validação do Domínio do inscrito é assegurada por uso de um par de chaves. Existirá um cliente agente ACME configurado no servidor do domínio cadastrado que será consultado pelo servidor da autoridade certificadora (AC). Clique aqui, para informações técnicas do seu funcionamento
2 – Emissão de Certificado ou Revogação de certificados automáticos –
Uma vez que o agente tem um par de chaves autorizadas, a solicitação de renovação e revogação dos certificados é simples: basta enviar mensagens de gerenciamento de certificado e assiná-las com o par de chaves autorizadas. Para obter um certificado para o domínio, o agente constrói um PKCS que solicita a CA Let’s Encrypt a emissão de um certificado para o domínio em questão, com a chave pública informada.
Em outras palavras, a ideia central do Let’s Encrypt é que o nível básico de validação de identidade pela autoridade certificadora possa ser realizado automaticamente (verificação básica, chamada Validação de Domínio, vide descrição acima). Assim, como a validação e, consequentemente, a emissão de certificado poderá ser realizada sem intervenção humana, não há quase nenhum custo marginal associado à emissão de um certificado para um novo domínio. Isto significa que este serviço pode ser prestado em grande escala em um modelo sem fins de lucro, sem custo para o usuário final que recebe o certificado.
Nosso objetivo é permitir que um administrador de sistemas leve menos de um minuto para obter e instalar um certificado confiável, sem nenhum custo, executando um único comando em um servidor. Usuários de navegadores Web não têm que mudar ou atualizar nada para que os certificados Let’s Encrypt sejam aceitos; eles simplesmente navegam na Web como de costume e estarão automaticamente protegidos.
Como obter um certificado?
Mesmo que o 1a. certificado, assinado pela CA Let’s Encrypt, tenha sido em meados de setembro de 2015, e já tenha havido mais de 11 mil emissões de certificados; o projeto, ainda, encontra-se em estágio de transição entre o beta e o stable de desenvolvimento. Pois, todos esses certificados foram emitidos com status privado.
Com publicação de hoje (3 de dezembro), o projeto Let’s Encrypt abriu o beta desenvolvimento ao público; permitindo que qualquer um possa requisitar um certificado. Para isso, é preciso preencher uma formulário de requisição e aguardar contato para mais informações.
Como ambiente de teste, fiz a requisição de um certificado para um domínio X e segui esse tutorial de instalação e configuração no Debian. Com base nisso, segue um passo-a-passo de como emitir, assinar e usar um certificado do Let’s Encrypt 😉
PASSO 1
Com acesso root ao servidor web (no meu caso Apache) que deseja usar o certificado, baixar os sources do projeto:
Depois entre no diretório escolhido usado para baixá-lo e entre na pasta letsencrypt. Execute o comando ./letsencrypt-auto para preparar o ambiente (baixando pacotes e dependências):
PASSO 2
Escolha um site Vhost, configurado no seu ambiente, para configurar o futuro certificado. Entre no arquivo correspondente (/etc/apache2/sites-available/{{conf}}) e insira a seguinte linha:
PASSO 3
Reinicie o apache! Depois esse execute esse comando para requisitar um novo certificado:
Onde,
- {{diretorio /var/www do seu site}} = /var/www/seu_site
- {{email do admin do sistema}} = e-mail do administrado do serviço – importante para contatos futuros
- {{domínio}} = www.seusite.com, por exemplo
Pronto!! Você deverá ver uma mensagem como essa:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/{{SEU DOMINIO}}/fullchain.pem. Your cert will expire on 2016-03-02. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - If like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Por fim, adicione no conf do Vhost do seu site o seguinte conteúdo:
PASSO FINAL
Acesse um navegador e informe o domínio do seu site; e veja o resultado 😉
Olá! desculpem se eu estiver falando bobagem, mas isso não iria ser uma complicação para quem roda um servidor linux utilizando o squid? Afinal o squid só trata http e não https. Se alguém puder explicar melhor eu agradeço.
Squid versão 3.x consegue tratar HTTPS https://www.howtoforge.com/filtering-https-traffic-with-squid. A limitação do Squid, nesse quesito, se refere a quando usado em modo transparente.
Não se pode pensar assim, primeiro a segurança na comunicação depois o bloqueio da comunicação. Já existe alternativas para bloquear HTTPS no Squid.
Sera possivel usar estes certificados com FTP?
O propósito inicial é para WebServers – apache e nginx. Quem sabe no futuro 😉
Funciona para subdomínios ?
Ótimo artigo pessoal!
Muito bom o tutorial vai ajudar muita gente. Acho que vale apena atualizar o tutorial com o Certbot, hoje é recomendado pela Let’s Encrypt!
🙂