Tornar o seu site seguro é essencial para garantir uma boa performance. Confira abaixo um tutorial completo para gerar seu certificado digital gratuito com Let’s Encrypt.

Quanto maior a confiabilidade do seu site, mais visitantes irão acessá-lo e com isso, mais transações poderão ser realizadas nele. Uma das maneiras de aumentar a confiabilidade (e pra mim hoje em dia, indispensável para qualquer site na web, é a instalação de um certificado SSL, certificado esse que autentica a identidade de um site e possibilita a transferência de dados criptografados sobre a conexão HTTP (se tornando HTTPS).

Há um tempo atrás adquirir um certificado SSL era altamente caro, o que dificultava e muito o acesso de empresas pequenas e freelancers a esse tipo de tecnologia. Porém, em 2016 foi criada a entidade certificadora Let’s Encrypt, um projeto encabeçado pela linux foundation com o objetivo de tornar mais fácil e automatizado o processo de adquirência de certificados digitais.

Como o let’s encrypt garante que não se trata de uma fraude?

O Let’s Encrypt implementa um novo protocolo chamado ACME com a finalidade de tornar mais simples a obtenção e configuração de certificados SSL.

Há 2 processos envolvidos em sua utilização: o primeiro é provar a CA (Certificate Authority) do Let’s Encrypt que um determinado servidor controla aquele domínio. Uma vez confirmado isso, é possível requisitar, renovar e revogar um certificado para o domínio confirmado de forma automática.

O agente do Let’s Encrypt que instalaremos no servidor é na verdade um cliente em Python. Na primeira vez que o cliente interagir com o servidor remoto da CA ela irá gerar um par de chaves criptográficas para este agente.

Em seguida, o servidor remoto ira solicitar um ou mais testes para confirmar se o servidor web realmente tem o controle do domínio para o qual ele solicita o certificado. Os testes podem ser, por exemplo:

  • Criar um registro DNS na URL sob o domínio;
  • Disponibilizar um recurso HTTP em uma página específica no domínio em questão.

Juntamente com os desafios, a CA do Let’s Encrypt pede que o agente assine os desafios com a chave pública enviada para ele, de forma que a CA possa checá-los com a chave privada correta. Certamente, trata-se de um processo bastante engenhoso e, até certo ponto, simples.

A imagem abaixo exemplifica esse processo: para provar que tem o controle do domínio example.com o Let’s Encrypt solicita que o agente instalado no servidor disponibilize uma página com ed98 assinado digitalmente com a chave pública 9cf0b331 gerada anteriormente, na URL /8303.

lets encrypt

Uma vez que o agente completa as tarefas solicitadas, ele avisa ao servidor remoto da CA que está pronto para a verificação e este, por sua vez, tenta baixar o documento solicitado esperando que o conteúdo seja aquele esperado. Se a assinatura criptográfica bater com o a chave privada, o agente é considerado autorizado para gerenciar o domínio example.com.

No artigo de hoje, iremos ver como podemos instalar certificados digitais gratuitos utilizando o certbot do Let’s Encrypt. Utilizando uma VPS da Locaweb como exemplo (ubuntu 20.04 com nginx), que é válido para qualquer distro baseada em debian. Continue a leitura e acompanhe o passo a passo:

Instalando o certbot no ubuntu 20.04

Primeiramente, você deverá instalar o snapd utilizando o comando abaixo:

sudo snap install core; sudo snap refresh core

Passo1_certificado gratuito com let's encrypt

Depois vamos instalar o certbot:

sudo snap install –classic certbot

Passo2_ certificado gratuito com let's encrypt

E então, vamos preparar o comando do certbot:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Passo3_certificado gratuito let's encrypt

Configure o seu domínio

Para o próximo passo, você deverá já ter configurado no servidor os domínios aos quais você gostaria de criar o certificado para a conexão HTTP (porta 80). E com o domínio apontando o DNS para o ip do servidor.

Exemplo de configuração de domínio:

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html/psicologa.dev/public;

index index.php index.html index.htm index.nginx-debian.html;

location / {
try_files $uri $uri/ =404;

}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;

 }

Ao tentarmos acessar o site por https teremos o seguinte:

Passo4_certificado gratuito com let's encrypt

Execute o certbot

Agora, só precisamos executar o certbot com o parâmetro –nginx (caso você use apache, basta fazer –apache).

Lembrando que esse comando irá modificar automaticamente a configuração do seu domínio da porta 80 (http) para a porta 443 (https).

sudo certbot –nginx

Passo5_certificado gratuito let's encrypt

Ao executar o comando ele irá solicitar o e-mail de administrador (o certbot irá enviar e-mails para lembrar você de atualizar o certificado quando estiver próximo de expirar).

Passo6_certificado gratuito let's encrypt

Também irá te solicitar a confirmação dos termos de serviço, para isso digite: y

Passo7_certificado gratuito let's encrypt

E se você quer compartilhar seu email com a eletronic frontier foundation para receber emails diversos. Digite y caso queira e n caso não queira.

Passo8_certificado gratuito let's encrypt

Aparecerá então todos os domínios configurados no seu servidor, no caso aqui o psicologa.dev

Passo9_certificado gratuito let's encrypt

Escolha o domínio que vai configurar

Você poderá escolher por número o domínio que deseja configurar. No caso aqui 1.

Depois, irá te falar onde foi salvo os arquivos físicos do certificado digital, bem como a data de expiração e realizará o deploy.

Passo10_certificado gratuito let's encrypt
Passo11_certificado gratuito let's encrypt

Resultado

Agora ao acessar o site, teremos:

Passo12_certificado gratuito let's encrypt

E no arquivo de configuração teremos algumas linhas escritas pelo certbot.

Passo13_certificado gratuito let's encrypt
Passo14_certificado gratuito let's encrypt

Agora temos um site com certificado digital gratuito!

Outros comandos

Caso você prefira configurar o https na mão, poderá gerar apenas o certificado com o comando:

sudo certbot certonly –nginx

E para renovar os certificados, você poderá criar um crontab por exemplo invocando o seguinte comando:

sudo certbot renew –dry-run

Passo15_certificado gratuito let's encrypt

Viu como é fácil? Ter seu site mais seguro e de graça? Por isso falo que em 2022 é inadimissível uma pessoa dev não ter um site rodando em HTTPS.

Ah pokemao, mas eu não estou utilizando o ubuntu… #comofaz?

No site oficial temos o exemplo de como instalar o certbot e gerar seus certificados em diversos sistemas operacionais e servidores web. Basta acessar https://certbot.eff.org/instructions e escolher o tipo de servidor e o sistema operacional e rodar.

Se tiver alguma dúvida, pode me mandar um e-mail (você consegue achar aqui no artigo) ou comentar aqui que posso te ajudar no que precisar.

Um grande abraço e até a próxima!

VPS Locaweb: melhor preço com a melhor infraestrutura no Brasil!

CONFIRA!