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.

Navegue pelo índice

    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!
    O autor

    Rodrigo Cardoso (Pokemaobr)

    Conhecido como Poke, é Streamer (Live "Coder") na Twitch, Web Developer e apresentador do talk show "The Velopers". Com bacharelado em Matemática e MBA em SOA, Poke atua como desenvolvedor e organizador de eventos de TI. É evangelista PHPSP e criador do PokePHP, focando em disseminar conteúdos técnicos e humor para a comunidade de desenvolvedores. Nas horas vagas, ele adora se conectar com a comunidade e compartilhar seu conhecimento de maneira divertida e informativa.

    Veja outros conteúdos desse autor