Crie um Certificado SSL grátis

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.