# Let's Encrypt

Let's Encrypt é uma autoridade de certificação lançada em 12 de abril de 2016, que fornece gratuitamente certificados de criptografia TLS (Transport Layer Security ) X.509 através de um processo automatizado, criado para eliminar a complexidade dos processos atuais de criação, validação, instalação e renovação de certificados para sites seguros.

## Visão geral

O projeto busca tornar as conexões criptografadas ubíquas para todos os servidores da World Wide Web. Ao eliminar barreiras como pagamento, e a renovação do certificado, espera-se diminuir significativamente a complexidade de configurar e manter criptografia TSL.
Em um servidor web Linux, a execução de apenas dois comandos é suficiente para configurar a encriptação HTTPS, adquirir e instalar os certificados necessários.
Com esse objetivo, um pacote de software foi incluído nos repositórios oficiais do Debian. Dois dos maiores desenvolvedores de navegadores - Mozilla e Google - atualmente têm iniciativas para tornar obsoletas as navegações não encriptadas (HTTP). Acredita-se que o projeto tenha o potencial de conseguir transformar as conexões encriptadas no padrão para toda a web.
Ao optar por ser o mais transparente possível, a iniciativa espera tanto proteger sua própria credibilidade como também proteger contra ataques e tentativas de manipulação. Para esse propósito, publicam frequentemente relatórios de transparência, fazem o log público de todas as transações ACME (usando, por exemplo, Certificado de transparência, e usam padrões abertos e software livre o máximo possível.
Atualmente, não existe planos para suportar certificados wildcard, apesar de não ter sido excluída essa possibilidade. A razão para a falta de suporte é que, por ser tão fácil conseguir um certificado não-wildcard via Let’s Encrypt, esse certificado torna-se desnecessário, existem usuários, porém, que opinaram que ainda existem casos nos quais os certificados wildcard são mais fáceis de usar ou mesmo tecnicamente necessários.

## Envolvidos

Let’s Encrypt é um serviço fornecido pela Internet Security Research Group (ISRG), uma organização de benefício público. Alguns dos principais apoiadores são a Electronic Frontier Foundation (EFF), a fundação Mozilla, OVH, Akamai e Cisco. Outros parceiros incluem a autoridade de certificação IdenTrust, Universidade de Michigan (U-M), a Faculdade de Direito de Stanford, a Fundação Linux e Stephen Kent, da Raytheon/BBN Technologies e Alex Polvi, da CoreOS.

### Conselho Técnico

* Rich Salz (A Akamai Technologies)
* Joe Hildebrand (Cisco Systems)
* Jacó Hoffman-Andrews (Electronic Frontier Foundation)
* J. C. Jones (Mozilla Foundation)
* Russ Housley (Independente)
* Ryan Hurst (Independente)
* Stephen Kent (Independente)
* Karen O'Donoghue (Internet Society)

## Tecnologia

Em junho de 2015, o Let’s Encrypt gerou um certificado raiz RSA cuja chave privada estava armazenada em um módulo de segurança de hardware, que é mantido offline. O certificado raiz é usado para assinar dois certificados intermediários, que têm assinatura cruzada pela autoridade de certificação IdenTrust. Um dos certificados intermediários é utilizado para assinar os certificados emitidos, e o outro é mantido offline como backup no caso de problemas com o primeiro. Como o certificado IdenTrust é pré-instalado nos maiores navegadores, os certificados da Let’s Encrypt podem ser validados normalmente e são aceitos assim que instalados, mesmo que nenhum dos fornecedores dos navegadores incluam o certificado raiz ISRG como âncora de confiança.
Os desenvolvedores Let’s Encrypt planejavam gerar também um certificado raiz ECDSA em 2015, o que foi postergado até o início de 2016.

### Protocolo

O protocolo desafio-resposta utilizado para automatizar a inscrição com esse novo certificado de autoridade é chamado ACME (Automated Certificate Management Environment) e envolve diversas requisições para o servidor web do domínio coberto pelo certificado. Baseado em se as respostas esperadas conseguem igualar as expectativas, o controle sobre o domínio é garantido (validação do domínio). Para fazer isso, o cliente de software ACME configura um servidor TLS especial no sistema do servidor, que recebe queries do servidor da autoridade de certificação ACME com requisições especiais usando Server Name Indication (Validação de Domínio usando Server Name Indication, DVSNI).
Os processos de validação são rodados diversas vezes em caminhos de redes separados. A checagem das entradas de DNS é provisionado para ser feito de múltiplas localidades geográficas para dificultar os ataques de DNS spoofing.
As interações ACME são baseadas na troca de documentos JSON em conexões HTTPS. Um rascunho da especificação está disponível no GitHub e a versão foi submetida à Internet Engineering Task Force (IETF) como proposta para um padrão da internet.

### Implementação de Software

A autoridade de certificação consiste em um pedaço de software chamado de Boulder, escrito em Go, que implementa a parte server side do protocolo ACME. Está publicado como software livre com o código fonte, sob os termos da versão 2 da Mozilla Public License (MPL). É disponibilizada uma API RESTful, que pode ser acessada através um canal encriptado por TLS.
Um gerenciador de certificados com licença Apache, desenvolvido em Python e chamado Certbot (antigo letsencrypt) é instalado no client side (o servidor web de um inscrito). Isso é usado para solicitar o certificado, conduzir o processo de validação do domínio, instalar o certificado e configurar a encriptação HTTPS no servidor HTTP, e, depois, renovar regularmente o certificado. Depois da instalação e de concordar com a licença do usuário, é necessário apenas um comando para conseguir instalar um certificado válido. Opções adicionais, como grampeamento do OSCP ou HTTP Strict Transport Security (HSTS) também podem ser ativados. A configuração automática inicialmente só funciona com Apache e nginx.
A Let’s Encrypt emite certificados válidos por 90 dias. A razão para isso é que estes certificados “limitam o dano no caso de emissão errada e erros chave” e encorajam a automação. O cliente oficial certbot e a maioria dos clientes de terceiros permitem a renovação automática do certificado.
Várias implementações de clientes terceiros em diversas linguagens foram criadas pela comunidade.

## História e Cronograma

O projeto Let’s Encrypt começou em 2012 por dois empregados da Mozilla, Josh Aas e Eric Rescorla, junto com Peter Eckersle da Eletronic Frontier Foundation e J. Alex Halderman da Universidade de Michigan. A Internet Security Research Group, empresa por trás do Let’s Encrypt, foi incorporada em Maio de 2013.
O Let’s Encrypt foi anunciado publicamente em 18 de Novembro de 2014.
Em 28 de Janeiro de 2015 o protocolo ACME foi oficialmente submetido ao IETF para padronização. Em 9 de Abril de 2015, a ISRG a Fundação Linux declararam suas colaborações. Os certificados raiz e intermediários foram gerados no começo de Junho. Em 16 de junho de 2015, o cronograma final para o lançamento do serviço foi anunciado, com a expectativa de emissão do primeiro certificado em algum momento na semana de de 27 de julho de 2015, seguido por um período de emissão limitada para testar segurança e escalabilidade. A disponibilidade geral do serviço originalmente era planejada para começar na semana de 14 de Setembro de 2015. Em 7 de agosto de 2015, o cronograma de lançamento foi alterado para fornecer mais tempo para garantir segurança e estabilidade; o primeiro certificado a ser emitido foi na semana de 7 de Setembro de 2015, seguido pela disponibilidade geral na semana de 16 de Novembro de 2015. Planejava-se que a assinatura cruzada da IdenTrust estivesse disponível quando a Let’s Encrypt abrisse para o público.
Em 14 de Setembro de 2015, a Let’s Encrypt emitiu seu primeiro certificado, para o domínio helloworld.letsencrypt.org. No mesmo dia, a ISRG submeteu as aplicações do seu programa raiz para Mozilla, Microsoft, Google e Apple.
Em 19 de Outubro de 2015, os certificados intermediários passaram a ter assinatura cruzada da IdenTrust, fazendo com que todos os certificados emitidos pela Let’s Encrypt tivessem a confiança de todos os grandes navegadores.
Em 12 de Novembro de 2015, a Let’s Encrypt anunciou que a disponibilidade geral seria adiada e que o primeiro beta público iria começar em 3 de dezembro de 2015.
Em 3 de dezembro de 2015, a Let’s Encrypt anunciou o começo do beta público.
Em 8 de março de 2016, a Let’s Encrypt emitiu seu milionésimo certificado após sete meses de existência.
Em 12 de abril de 2016, o Let’s Encrypt saiu do Beta.
Em 21 de abril de 2016, 44 dias depois de emitir seu milionésimo certificado, a Let’s Encrypt chegou a 2 milhões de certificados emitidos. Em 3 de Junho de 2016, a Let’s Encrypt emitiu mais de 4 milhões de certificados. Em 22 de junho de 2016, a Let’s Encrypt tinha emitido mais de 5 milhões de certificados, dos quais 3.8 milhões não podem ser expirados ou revogados. Os certificados ativos cobrem mais de 7 milhões de domínios únicos, em parte devido ao suporte de grandes empresas de hospedagem.
Em 9 de Setembro de 2016, eles emitiram mais de 10 milhões de certificados; e em 27 de novembro de 2016 já eram mais de 20 milhões e, em Dezembro de 2016, 24 milhões.
No início de 2019 são emitidos em média 1 milhão de certificados ao dia.