Tips Infra

Proteja seu site com certificado digital grátis

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 😉

0 0 votes
Article Rating
Subscribe
Notify of
guest

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

3 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
Ver todos os comentários
Wemerson

Olá.
Poderia fazer um tutorial de como renovamos o certificado que foi gerado desta maneira, por favor?

Wemerson

Opa Bruno.
Deu certo cara, muito obrigado.

3
0
Adoraria sua opinião, por favor, comente.x