Instalar certificado SSL/TLS digital válido gratuito no Linux

Veremos como instalar um certificado SSL/TLS válido e gratuito para colocar no seu site e criptografar a transmissão dos dados. A instalação utilizada foi a mais padrão possível para se adaptar à maioria das distribuições Linux, porém, apesar de ser padrão, não é básica.

[ Hits: 7.665 ]

Por: Buckminster em 01/04/2023


Configurando



Renovação dos certificados

O certificado auto-assinado é válido por 90 dias. No entanto, este pode ser renovado quando estiver prestes a expirar nos últimos 30 dias.

Renovação manual

O processo de renovação dos certificados Let's Encrypt é facilitado pelo certbot que reutiliza os parâmetros usados na criação do certificado.

Os certificados são renovados apenas se estiverem prestes a expirar.

Caso tente renovar antes do término do prazo de 90 dias dará um aviso de que não foi possível renovar:

# certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-----------------------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/exemplo.com.conf
-----------------------------------------------------------------------------------------------
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/home.example.com/fullchain.pem (skipped)
No renewals were attempted.

----------------------------------------------------------------------------------------------


Antes de renovar pode fazer uma simulação com:

# certbot renew --dry-run

Renovação automática

Opcionalmente, pode-se criar uma tarefa agendada no Cron para proceder à renovação automática dos certificados quando estes estiverem prestes a expirar.

Durante a instalação o certbot configura essa tarefa de forma automática.

Você pode vislumbrar o arquivo com:

# vim /etc/cron.d/certbot

* ou use teu editor de texto predileto.

# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc.  Renewal will only occur if expiration
# is within 30 days.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew

Para adicionar um domínio:

# certbot-auto --expand -d dominio1.com.br,dominio2.com.br

Para deletar um certificado:

# certbot revoke --cert-path /etc/letsencrypt/live/www.exemplo.com/fullchain.pem

Para ver o status e se o certificado está ativo e ver informações como data, etc:

# systemctl status certbot.timer

Arquivo meu_site.conf:

# cd /etc/apache2/sites-available
# vim meu_site.conf

Lembrando que o arquivo meu_site.conf você já deverá tê-lo criado na instalação e configuração do Apache2.

Aqui chamaremos de exemplo.conf.

# vim exemplo.conf

Coloque o seguinte dentro do arquivo:

<VirtualHost *:80>
   ServerName www.exemplo.com.br
   ServerAlias exemplo.com.br
   Redirect permanent / https://www.exemplo.com.br/
   # ErrorLog ${APACHE_LOG_DIR}/www.exemplo.com.br/www-error.log
   # CustomLog ${APACHE_LOG_DIR}/www.exemplo.com.br/www-access.log combined
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
#
<VirtualHost _default_:443>
   ServerName exemplo.com.br
   Redirect permanent / https://www.exemplo.com.br/
   SSLProxyEngine on
   SSLEngine on
   SSLCertificateFile        /etc/letsencrypt/live/www.exemplo.com.br/cert.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/www.exemplo.com.br/privkey.pem
   SSLCaCertificateFile   /etc/letsencrypt/live/www.exemplo.com.br/fullchain.pem
</VirtualHost>
#
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin admin@exemplo.com.br
                ServerName www.exemplo.com.br
                DocumentRoot /var/www/exemplo.com.br
                SSLEngine on
    SSLCertificateFile        /etc/letsencrypt/live/www.exemplo.com.br/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.exemplo.com.br/privkey.pem
    SSLCaCertificateFile   /etc/letsencrypt/live/www.exemplo.com.br/fullchain.pem
                <FilesMatch ".(cgi|shtml|phtml|php)$">
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                </Directory>
                BrowserMatch "MSIE [2-6]"
                                nokeepalive ssl-unclean-shutdown
                                downgrade-1.0 force-response-1.0
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
        </VirtualHost>
</IfModule>

Coloque teu site no lugar de www.exemplo.com.br e acrescente as tuas configurações no arquivo, se quiser. Salve e saia do arquivo e execute:

Para criar um link com sites-enabled, se já não tiver:

# a2ensite exemplo.conf

Para dar um reload nas configurações:

# systemctl reload apache2

Para reiniciar o Apache2:

# systemctl restart apache2 <

Teste abrindo o navegador e digitando na barra de endereços:

www.exemplo.com.br

e verá teu site abrir com HTTPS e o cadeado ao lado.

Caso isso não aconteça ou que apareça aquela página escrota de "site não confiável", certificado inválido, etc, pode ser que seja a tua primeira vez com o Certbot, então acesse o e-mail que tu cadastrou na instalação e clique no link do e-mail enviado pelo Certbot para ativar. As vezes é necessário, as vezes não.

Repare que temos três linhas:

SSLCertificateFile         /etc/letsencrypt/live/exemplo.com.br/cert.pem
SSLCertificateKeyFile  /etc/letsencrypt/live/exemplo.com.br/privkey.pem
SSLCaCertificateFile    /etc/letsencrypt/live/exemplo.com.br/fullchain.pem

  • SSLCertificateFile - arquivo de dados de certificado X.509 codificado por PEM do servidor ou identificador de token; aponta para um arquivo com os dados do certificado.
  • SSLCertificateKeyFile - arquivo de chave privada codificado por PEM do servidor; aponta para o arquivo de chave privada.
  • SSLCaCertificateFile - arquivo de certificados CA codificados por PEM concatenados para autenticação do cliente; define o arquivo tudo-em-um onde são montados os Certificados das Autoridades Certificadoras (CA).

PEM - significa Privacy Enhanced Mail (E-mails reforçados para privacidade). O formato PEM é frequentemente usado para representar certificados, solicitações de certificado, cadeias de certificados e chaves. A extensão típica para um arquivo formatado como PEM é . pem, mas não precisa ser. É usado para estabelecer um canal de comunicação seguro entre um servidor da Web e um navegador. É codificado em Base64 e pode conter uma chave privada, certificado de servidor e/ou uma combinação de outros certificados.

Grosso modo, PEM é um formato de arquivo contêiner que define a estrutura e o tipo de codificação do arquivo usado para armazenar os dados.

As duas linhas:

Redirect permanent / https://www.exemplo.com.br/

fazem o redirecionamento de todas as conexões HTTP para HTTPS, ou seja, se alguém acessar teu site com http://www.exemplo.com.br será sempre automaticamente redirecionado para https://www.exemplo.com.br.

Caso tiver arquivos 000-default.conf aconselho a executar:

# mv 000-default.conf 000-default.conf.bkp

As linhas ServerName e ServerAlias deixe-as como estão.

Pode testar colocando ServerName e ServerAlias, os dois somente com www.exemplo.com.br ou com exemplo.com.br e verá que teu site poderá ficar lento ou aparecer o erro ERR_CONNECTION_REFUSED. O Apache é um cara bem sensível.

As linhas com BrowserMatch, pesquise no link com mod_setenvif abaixo.

A título de curiosidade, no arquivo README.Debian.gz do Apache2 encontramos informações interessantíssimas.

Caminho no Debian, procure o caminho na tua distribuição:

# vim /usr/share/doc/apache2/README.Debian.gz

Referências


Página anterior    

Páginas do artigo
   1. Introdução
   2. Instalando
   3. Configurando
Outros artigos deste autor

Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie

Como agendar um backup automático do PostgreSQL no Cron evitando o problema de senha

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Atualizar o macOS no Mac - Opencore Legacy Patcher

Instalação do PostgreSQL, Apache2 e PHP8 no Debian Buster 10 e no Stretch 9

Leitura recomendada

Entendendo as permissões no Linux

Capturando e-mails da rede com Mailsnarf

O que é ForceCommand

Blindando sua rede com o HLBR - Um IPS invisível e brasileiro

Sudo 1.8.12 - Parte I - Manual

  
Comentários
[1] Comentário enviado por maurixnovatrento em 14/05/2023 - 22:02h


Muito bom o artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts