Como obter certificados SSL gratuitos com Let's Encrypt

Aprenda como proteger seu site com certificados SSL gratuitos do Let's Encrypt usando o protocolo ACME, automatizando a emissão de certificados através de desafios HTTP e DNS.

Let’s Encrypt é uma Autoridade Certificadora (CA) gratuita, aberta e automatizada usada para emitir certificados SSL usando o protocolo ACME (Ambiente de Gerenciamento Automático de Certificados). Os certificados SSL são um componente crucial para a segurança de aplicações web e o sucesso de um site, pois permitem a transferência segura de dados usando HTTPS. O HTTPS não apenas aumenta o posicionamento do site nos mecanismos de busca e a confiança dos usuários, mas também permite o uso do protocolo HTTP/2, resultando em melhorias significativas de performance em relação ao HTTP/1.

Para usar seu próprio domínio HTTPS, os usuários podem fazer upload do seu próprio certificado SSL. No entanto, para obter um certificado SSL, os usuários devem usar uma CA como o Let’s Encrypt para validar a identidade do servidor e emitir um certificado que vincule a identidade à chave pública do servidor. Este artigo orientará os leitores através do processo, desde a instalação e configuração do software necessário até a emissão de certificados por meio de tipos de desafio HTTP e DNS.

O que é ACME e como funciona?

O Let’s Encrypt usa o protocolo ACME (Ambiente de Gerenciamento Automático de Certificados) para verificar se você controla um determinado nome de domínio e emitir um certificado. Com o ACME, o processo de obtenção de um certificado SSL é totalmente automatizado, o que melhora a segurança reduzindo a possibilidade de erro e permite que o Let’s Encrypt ofereça certificados validados de domínio gratuitamente.

O ACME permite que agentes de software em servidores HTTPS obtenham, provisionem e renovem certificados automaticamente, sem interação humana. No entanto, antes que o cliente solicitante possa gerenciar o certificado, ele deve primeiro provar que controla o domínio. Primeiro, o agente solicitante envia a chave pública para seu servidor e pergunta à CA Let’s Encrypt o que precisa ser feito para provar que controla o domínio. A CA fornecerá uma lista de desafios que o cliente pode completar para validar o controle do domínio e um token, que o cliente deve assinar com seu par de chaves privadas.

Depois que o cliente completa os desafios, ele assina o token com sua chave privada para provar que controla o par de chaves e notifica a CA de que está pronto para concluir a validação. Quando a CA garante que o desafio está completo e verifica a assinatura, o agente é autorizado para o gerenciamento de certificados usando o par de chaves.

Para obter um certificado, o agente constrói uma Solicitação de Assinatura de Certificado PKCS#10 (CSR) pedindo à CA para emitir um certificado para o domínio usando uma chave pública específica, acompanhada pela assinatura da chave privada correspondente e pela assinatura do par de chaves autorizado para o domínio. Após verificar ambas as assinaturas, a CA emite um certificado para o domínio com a chave pública da CSR.

Instalação e configuração do acme.sh

Para obter um certificado Let’s Encrypt, você precisará escolher um software cliente ACME. Um dos softwares cliente ACME recomendados e mantidos pela comunidade é acmesh, que implementa o protocolo ACME em script shell Unix puro e, portanto, é suportado em várias plataformas (como Mac OSX, Windows, FreeBSD, Solaris e muitas distribuições Linux).

Ao usar o acme.sh, é possível emitir e renovar certificados usando tipos de desafio HTTP e DNS. O acme.sh está pronto para IPv6 e é fácil de usar. Embora o GitHub forneça métodos adicionais de instalação, este tutorial irá guiá-lo pela instalação e configuração via comando curl.

O acme.sh pode ser instalado no mesmo servidor de origem que sua aplicação ou em um servidor reservado para executar este serviço. O comando curl para instalação é:

Terminal window
curl https://get.acme.sh | sh -s email=seu.email@exemplo.com
source ~/.bashrc

A instalação pode ser verificada emitindo o comando:

Terminal window
acme.sh --version
v2.8.1

Depois que o acme.sh estiver instalado, você pode configurá-lo para usar o Let’s Encrypt como uma CA (Autoridade Certificadora) com o comando:

Terminal window
acme.sh --set-default-ca --server letsencrypt

Completando desafios

Uma vez instalado e configurado o acme.sh, você pode usá-lo para provar o controle do seu domínio usando um dos desafios especificados pela CA, como provisionar um recurso HTTP sob um dos URIs bem conhecidos do domínio ou provisionar um registro DNS sob o domínio. Embora o HTTP seja o tipo de desafio mais comum, você pode preferir usar o método DNS se estiver emitindo certificados para um domínio curinga ou tiver vários servidores web.

Desafio HTTP

Este é atualmente o tipo de desafio mais comum, pois é fácil de automatizar e funciona bem com servidores web comuns. O Let’s Encrypt fornece ao cliente um token ACME, e ele deve inserir um arquivo em seu servidor web em http://<SEU_DOMÍNIO>/.well-known/acme-challenge/<TOKEN>

Se você estiver executando o acme.sh em um servidor diferente da sua origem principal, você só precisa definir uma regra para direcionar as solicitações deste caminho para esse servidor.

A geração do certificado pode ser feita com um único comando:

Terminal window
acme.sh --issue -d lets.httpbin.xyz -w /usr/share/nginx/html

Após este comando, leva menos de 10s para completar o processo de desafio.

O acme.sh armazenará o arquivo no local indicado (/usr/share/nginx/html) e tanto sua edge application quanto seu servidor de origem receberão uma solicitação para obter este arquivo. Se o processo for concluído com sucesso, o acme.sh mostrará a localização dos arquivos de certificado, chave e strings.

Desafio DNS

O desafio ACME usando DNS adiciona um valor específico a um registro TXT no DNS do seu domínio. Normalmente, esse tipo de desafio é mais difícil de configurar do que o HTTP, mas se seu domínio estiver configurado em um serviço DNS com acesso API, esse processo pode ser feito extremamente rápido usando o acme.sh.

No entanto, manter credenciais de API em seu servidor web aumenta o impacto de um ataque se esse servidor web for hackeado. Portanto, por razões de segurança, recomendamos que você crie uma conta configurada exclusivamente para essa integração, com permissões apenas para o serviço DNS.

Para integrar o acme.sh com uma API DNS, você precisa configurar as variáveis de ambiente apropriadas para autenticação de acesso. As variáveis exatas dependerão do seu provedor DNS.

Por exemplo, se você estiver usando um provedor DNS com acesso API:

Terminal window
export DNS_API_Email="seu.email@exemplo.com"
export DNS_API_Password="<SUA SENHA>"

O certificado pode então ser gerado usando o seguinte comando (substitua dns_provider pelo nome do módulo acme.sh do seu provedor DNS real):

Terminal window
acme.sh --issue --dns dns_provider -d exemplo.com

Todo esse processo pode ser acompanhado por logs. O acme.sh acessará a API DNS e adicionará o registro (TXT _acme-challenge.exemplo.com) ao domínio escolhido. Depois disso, o Let’s Encrypt fará uma consulta de registro e, se tudo estiver funcionando corretamente, o certificado e as chaves serão fornecidos.

Agora você só precisa fazer upload do conteúdo do seu certificado e chaves para seu servidor web ou plataforma de entrega de conteúdo para usá-los com seu domínio.

Conclusão

Com o aumento no custo e na frequência de ataques cibernéticos no último ano, é mais importante do que nunca que os proprietários de negócios digitais se comprometam com a segurança de seus sites obtendo certificados SSL para seus domínios. Embora esse processo tenha sido uma vez complicado, caro e propenso a erros humanos, o Let’s Encrypt aumentou drasticamente a adoção do HTTPS desde seu lançamento, reduzindo significativamente o ônus financeiro e processual do gerenciamento de certificados.

Seguindo este processo, os usuários podem facilmente obter certificados SSL e, usando integração de API DNS, até mesmo completar desafios DNS para casos de uso especializados de maneira simples e segura.


fique atualizado

Inscreva-se na nossa Newsletter

Receba as últimas atualizações de produtos, destaques de eventos e insights da indústria de tecnologia diretamente no seu e-mail.