Você já utiliza HTTPS em seu site? Não? Então fique comigo neste artigo e aprenda a configurar o seu certificado digital, e o melhor, GRÁTIS através da Let’s Encrypt.
A Let’s Encrypt é uma autoridade de certificação sem fins lucrativos que oferece serviços gratuitos de emissão de certificados SSL/TLS. Seu principal objetivo é promover a segurança na web, facilitando o processo de obtenção e renovação de certificados, permitindo a comunicação segura entre os usuários e os sites. O Certbot, uma ferramenta desenvolvida pela Let’s Encrypt, é amplamente utilizado para automatizar o processo de geração e renovação de certificados SSL/TLS, tornando mais acessível à implementação de conexões seguras em sites e servidores.
Para este artigo vamos usar o Debian 12, e vamos gerar o certificado digital para um site que esta no apache, mas não se preocupe, pois a parte de geração do certificado irá funcionar para todos os WebServer que você utilize.
Recentemente publicamos um artigo sobre como instalar o GLPI, e vamos usar o Let’s Encrypt para proteger este site, se você ainda não viu, de uma olhada clicando aqui.
Para podermos gerar o certificado vamos precisar instalar alguns pacotes e também vamos precisar de um domínio de internet, no meu caso vou usar atendimento.tipsinfra.com.br.
Caso você ainda não tenha um domínio, pode estar adquirindo um no Registro.BR ou se você quiser ajudar o site pode efetuar a compra pela Hostgator clicando aqui.
Você também deve ter um servidor de DNS que já esteja configurado com o seu domínio, eu utilizo o DNS da Cloudflare que é gratuito e muito rápido, mas pode ser qualquer outro.
Vamos la então, no Debian vamos precisar instar o pacote Certibot para poder gerar o certificado.
# Atualizando os pacotes
sudo apt update
# Instalando o certibot
apt -y install certbot
Pronto já temos os pacotes necessários para gerar o certificado, agora vamos fazer a solicitação do certificado.
Existem várias formas de fazer a validação do domínio na hora de solicitar o certificado, mas como o meu site não é um site PUBLICO eu vou usar a validação por meio do DNS, onde a gente vai criar uma entrada TXT em nosso DNS com as informações passadas, execute os comando abaixo mudando o “atendimento.tipsinfra.com” para o site que você deseja te o certificado, NÃO APERTE ENTER PARA CONTINUAR NESTE MOMENTO!
# Gerando o certificado
sudo certbot certonly --manual --preferred-challenges=dns -d atendimento.tipsinfra.com
# adicione seu e-mail quando solicitado
Enter email address (used for urgent renewal and security notices)
# Aceite os termos e condições se solicitado
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
# Aceite ou recuse que seu e-mail seja compartilhado com a Electronic Frontier Foundation
(Y)es/(N)o: Y
Agora você vai notar que ele nos deu várias coisas na tela, vamos entender o que precisamos fazer.
Os dados principais que temos que nos atentar é na linha onde temos “_acme-challenge.atendimento.tipsinfra.com” essa é a entrada TXT que vamos precisar criar.
E onde temos “T6bsuHPhOKpvyd1TfG9OIaM4CkoJnYTA1WqcUcKDIjs” é o valor que essa entrada TXT terá que ter.
Isso são dados para a validação de que o site realmente é seu, por isso tem que ser criado no DNS Publico, bom vamos la criar em nosso DNS.
Após criarmos essa entrada de DNS, podemos voltar no Debian e pressionar enter para que o DNS seja validado e o certificado gerado.
Após a validação será informado para você os dados deste certificado e o local onde o mesmo está salvo, o caminho em vermelho é onde está salvo o seu certificado.
E é isso, seu certificado está pronto para uso, vamos usá-lo?
Configurações do apache para reconhecer o certificado
Primeiro precisamos informar ao apache que vamos passar a utilizar o modulo HTTPS para isso vamos executar o comando abaixo.
# Habilitando o modulo HTTPS
a2enmod ssl
# Reiniciando o apache para aplicar as configurações
systemctl restart apache2
Agora vamos editar o vhost do apache para que ele tenha os dados do certificado, aqui eu vou colocar para vocês como ficou o meu Vhost com base na instalação do GLPI, mas vou destacas o que precisa se adicionado em qualquer vhost, pois o restante da configuração é para cada site.
Todas as configurações abaixo vão ser no arquivo /etc/apache2/sites-enabled/glpi.conf, mas você deve alterar para o VHOST do seu site.
Primeiramente vou adicionar um redirecionamento da requisição na porta 80 para a 443.
ServerName = URL do seu site
# Redirecionamento da requisição em HTTP para HTTPS
<VirtualHost *:80>
ServerName atendimento.tipsinfra.com
Redirect permanent / https://atendimento.tipsinfra.com
</VirtualHost>
Agora vamos habilitar que o site escute em HTTPS e colocar os dados do certificado.
<VirtualHost *:443> = isso habilita a porta 443 neste VHOST
Habilitando o SSL e informando qual arquivo deve ser usado (o caminho é o que o Certibot te passou quando terminou de gerar o certificado.
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/atendimento.tipsinfra.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/atendimento.tipsinfra.com/privkey.pem
Por fim segue como ficou meu arquivo por completo.
<VirtualHost *:80>
ServerName atendimento.tipsinfra.com
Redirect permanent / https://atendimento.tipsinfra.com
</VirtualHost>
<VirtualHost *:443>
ServerName atendimento.tipsinfra.com
DocumentRoot /var/www/glpi/site/public
ErrorLog ${APACHE_LOG_DIR}/atendimento.tipsinfra.com_error.log
CustomLog ${APACHE_LOG_DIR}/atendimento.tipsinfra.com_access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/atendimento.tipsinfra.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/atendimento.tipsinfra.com/privkey.pem
<Directory /var/www/glpi/site/public>
AllowOverride All
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
Options -Indexes
Options -Includes -ExecCGI
Require all granted
<IfModule mod_php.c>
php_value max_execution_time 600
php_value always_populate_raw_post_data -1
</IfModule>
</Directory>
</VirtualHost>
Após os ajustes salve o arquivo e reinicie o apache
# Reiniciando o apache
systemctl restart apache2
Agora se você já tiver um apontamento de DNS correto para o IP do seu servidor, você deve conseguir acessar o seu site já com o HTTPS conforme a imagem abaixo.
Espero ter ajudado 😉
Olá.
Poderia fazer um tutorial de como renovamos o certificado que foi gerado desta maneira, por favor?
Opa, a renovação é bem simples de se fazer, vou fazer algo melhor, mas basicamente você precisa rodar o mesmo comano
certbot certonly --manual --preferred-challenges=dns -d dominio.com.br
Quando rodar ele vai falar que o certificado já existe e se quer atualizar, e vai te gerar a nova hash, altera o dns e manda validar, que ele vai atualizar o certificado atual.
Depois disso é só reiniciar o servidor web ou dar um reload
Opa Bruno.
Deu certo cara, muito obrigado.