Neste artigo vou apresentar como gerar um certificado SSL com validade de 90 dias grátis, utilizando o Let’s encrypt. Para demonstração vou utilizar o Let’s encrypt ubuntu, com o utilitário certbot.
O que é SSL?
O SSL (Secure Sockets Layer), é um protocolo desenvolvido com a proposta de assegurar que os dados trafegados entre um cliente e um servidor sejam privados, assim garantindo a segurança da comunicação. Ele é utilizado para verificar e validar a identidade de um domínio e criar um canal de comunicação criptografada, entre o cliente e o servidor.
Certificado SSL
Um certificado SSL funciona com um par de chaves, sendo uma pública e uma privada. A chave pública, fica disponível com informações do domínio e da CA (Certificate authority), que é o órgão responsável por gerar e validar o certificado. Já a chave privada fica indisponível sendo somente utilizada pelo servidor no processo da comunicação.
HTTPS
O protocolo HTTPS é quando utilizamos o protocolo de comunicação HTTP com segurança SSL/TLS. Assim ele ganha o S de Secure (Hypertext Transfer Protocol Secure). Para utilizar o HTTPS em nosso site, no servidor Web configuramos o par de chaves pública e privada. Quando o navegador de internet realiza o acesso ao site com o https, ele verifica a chave pública que tem informações da identidade do domínio e informações da autoridade certificadora que gerou o certificado. Após validar as informações do domínio e validar a certificadora, o navegador estabelece a conexão segura com o site. Com isso toda a comunicação entre o navegador que no caso é o cliente, com o servidor do site é feita de forma criptografada. Aqui também falo do protocolo TLS, pois ele é o substituto do SSL que gradualmente está sendo implementado nos servidores da Web.
Let’s encrypt é seguro?
O Let’s Encrypt é um projeto que fornece certificados gratuitos para domínios. Ele atua como uma autoridade certificadora (Certificate authority), validando os certificados gerados. É possível qualquer um gerar um certificado digital por conta própria e realizar sua auto assinatura. Mas ao utilizar um certificado auto assinado em um site, quando o navegador realizar a verificação ele não conseguirá validar a autoridade certificadora, assim o certificado vai aparecer como inválido. O Let’s Encrypt está na lista de autoridade certificadora dos navegadores de internet, sendo os certificados gerados por ele válidos, com isso ele se prova confiável. Outro ponto também é que a iniciativa do Let’s Encrypt, é apoiada por grandes empresas de tecnologia como a Meta, AWS e Cisco.
Certificado SSL gratuito letsencrypt
Agora vamos gerar nosso certificado SSL/TLS no linux ubuntu. Escolhi o Linux pois boa parte dos servidores de hospedagem de sites utilizam o Linux como sistema operacional. Para gerar o certificado, vamos utilizar o software certbot que foi feito para trabalhar com o Let’s encrypt.
Certbot
A instalação do certbot é feita através do snap, que já vem instalado nas versões atuais das principais distribuições Linux. O SNAP permite instalar, atualizar, remover e configurar snaps, que são pacotes que não precisam ser instalados no computador para serem executados e não precisam de adaptações para funcionarem em diferentes distribuições Linux.
1 – Atualize o snapd, no terminal execute o comando:
sudo snap install core; sudo snap refresh core
2 – Instale o certbot com o comando abaixo
sudo snap install --classic certbot
3 – Configure o ubuntu para utilizar o cerbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
4 – Gere o certificado ssl gratuito com o comando
sudo certbot certonly --manual --preferred-challenges=http --email meuemail@seudominio.com.br --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d seudominio.com.br
Substitua o domínio pelo domínio qual deseja gerar o certificado e o email pelo email do responsável pelo domínio. Ao utilizar o comando, ele solicitará que seja cumprido um desafio para provar que o domínio pertence a você. Como na opção –preferred-challenges utilizamos o http, será solicitado que seja inserido um arquivo na hospedagem do site para que ele possa ser consultado e assim feita a validação.
Instalar certificado SSL Apache Ubuntu
Depois de gerar o certificado SSL/TLS, copie a chave pública e privada para o servidor Web onde seu site está hospedado. Normalmente será gerado as chaves com os nomes: fullchain.pem e privkey.pem, onde o fullchain é a chave pública e o privkey a chave privada. Depois de copiar para o servidor, caso esteja utilizando o servidor Web Apache, mova os arquivos para o diretório /etc/ssl/seudominio.com.br. Após isso utilize uma configuração semelhante a isto:
<VirtualHost *:443> ServerName seudominio.com.br. ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ <Directory "/var/www/html/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile /etc/ssl/seudominio.com.br/fullchain.pem SSLCertificateKeyFile /etc/ssl/seudominio.com.br/privkey.pem </VirtualHost>
Não vou aprofundar muito na configuração pois artigo ficaria muito extenso e perderia o seu foco. Na maioria dos provedores de hospedagem Web, esta configuração é feita através de um painel administrativo ou mesmo de forma automática. Por exemplo, o provedor que hospeda este blog, a Mav Tecnologia fornece um ambiente que conta com o certificado ssl gratuito com configuração automática.
SSL server test
Agora vamos realizar um SSL server test, para conferir se nosso certificado SSL foi gerado corretamente. Acesse novamente o terminal do Linux e utilize o comando abaixo, substituindo seudominio.com.br pelo endereço do seu site. Após o endereço temos a porta 443, isto é necessário pois esta é a porta de conexão SSL/TLS.
openssl s_client -connect seudominio.com.br:443
Benefícios do certificado SSL
Vou listar aqui em minha visão três principais benefícios de utilizar o SSL/TLS em seu site .
1 – Segurança na comunicação entre o cliente e servidor
Com a criptografia dos dados, o conteúdo das informações trafegadas entre o servidor e o cliente ficam inacessíveis. Assim, dados sensíveis podem ser trafegados sem ter o risco da interceptação e leitura das informações. Outro ponto é a confiabilidade, pois temos a certeza que os dados não foram modificados no meio do caminho.
2 – Validação da identidade do domínio
Com uma autoridade certificadora, o domínio é validado e se prova autêntico. Isto previne possíveis fraudes que possam ser realizadas por terceiros, que tentam se passar pelo domínio em questão.
3 – Rankeamento no SEO
O Google está penalizando bastante os domínios que não tem certificado SSL/TLS, marcando como inseguro no navegador e também abaixando o mesmo no ranking de pesquisas da busca orgânica.