Pesquisa de site

Como criar um certificado SSL autoassinado local no CentOS 8


SSL (Secure Socket Layer), e sua versão melhorada, TLS (Transport Socket Layer), são protocolos de segurança que são usados para proteger o tráfego da web enviado do navegador de um cliente para um servidor da web.

Um certificado SSL é um certificado digital que cria um canal seguro entre o navegador de um cliente e um servidor web. Ao fazer isso, dados sensíveis e confidenciais, como dados de cartão de crédito, credenciais de login e outras informações altamente privadas, são criptografados, evitando que hackers espionem e roubem suas informações.

O que é um certificado SSL autoassinado?

Um certificado SSL autoassinado, ao contrário de outros certificados SSL que são assinados e confiáveis por uma Autoridade de Certificação (CA), é um certificado assinado por um indivíduo que o possui.

A criação de um é totalmente gratuita e é uma forma barata de criptografar seu servidor web hospedado localmente. No entanto, o uso de um certificado SSL autoassinado é altamente desencorajado em ambientes de produção pelos seguintes motivos:

  1. Como não é assinado por uma Autoridade de Certificação, um certificado SSL autoassinado gera alertas nos navegadores da Web, alertando os usuários sobre possíveis riscos futuros, caso decidam prosseguir. Esses alertas são indesejados e dissuadirão os usuários de visitar seu site, levando potencialmente a uma diminuição no tráfego da web. Como solução alternativa para esses alertas, as organizações geralmente incentivam seus funcionários a simplesmente ignorar os alertas e prosseguir. Isto pode gerar um hábito perigoso entre os usuários que podem decidir continuar ignorando esses alertas em outros sites online, tornando-se potencialmente vítimas de sites de phishing.
  2. Os certificados autoassinados têm um nível de segurança baixo, pois implementam tecnologias de criptografia e hashes de baixo nível. Assim, o nível de segurança pode não estar de acordo com as políticas de segurança padrão.
  3. Além disso, não há suporte para funções de infraestrutura de chave pública (PKI).

Dito isso, o uso de um certificado SSL autoassinado não é uma má ideia para testar serviços e aplicativos em uma máquina local que requer criptografia TLS/SSL.

Neste guia, você aprenderá como instalar um certificado SSL autoassinado local no servidor web Apache localhost em um sistema de servidor CentOS 8.

Pré-requisitos:

Antes de começar, certifique-se de ter os seguintes requisitos básicos:

  1. Uma instância do servidor CentOS 8.
  2. Servidor web Apache instalado no servidor
  3. Um nome de host já configurado e definido no arquivo /etc/hosts. Para este guia, usaremos tecmint.local um nome de host para nosso servidor.

Etapa 1: Instalando Mod_SSL no CentOS

1. Para começar, você precisa verificar se o servidor web Apache está instalado e funcionando.

sudo systemctl status httpd

Aqui está o resultado esperado.

Se o servidor web não estiver em execução, você pode iniciá-lo e habilitá-lo na inicialização usando o comando.

sudo systemctl start httpd
sudo systemctl enable httpd

Depois disso, você pode confirmar se o Apache está instalado e funcionando.

2. Para ativar a instalação e configuração do certificado SSL autoassinado local, o pacote mod_ssl é necessário.

sudo dnf install mod_ssl

Uma vez instalado, você pode verificar sua instalação executando.

sudo rpm -q mod_ssl

Além disso, certifique-se de que o pacote OpenSSL esteja instalado (OpenSSL vem instalado por padrão no CentOS 8).

sudo rpm -q openssl 

Etapa 2: Crie um certificado SSL autoassinado local para Apache

3. Com o servidor web Apache e todos os pré-requisitos verificados, você precisa criar um diretório dentro do qual as chaves criptográficas serão armazenadas.

Neste exemplo, criamos um diretório em /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Agora crie a chave e o arquivo do certificado SSL local usando o comando:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Vamos dar uma olhada no que algumas das opções do comando realmente significam:

  • req -x509 – Isso indica que estamos usando a solicitação de assinatura de certificado (CSR) x509.
  • -nodes – Esta opção instrui o OpenSSL a ignorar a criptografia do certificado SSL usando uma senha longa. A idéia aqui é permitir que o Apache possa ler o arquivo sem qualquer tipo de intervenção do usuário, o que não seria possível se uma senha fosse fornecida.
  • -newkey rsa:2048 – Indica que queremos criar simultaneamente uma nova chave e um novo certificado. A parte rsa:2048 implica que queremos criar uma chave RSA de 2048 bits.
  • -keyout – Esta opção especifica onde armazenar o arquivo de chave privada gerado na criação.
  • -out – A opção especifica onde colocar o certificado SSL criado.

Etapa 3: Instale o certificado SSL autoassinado local no Apache

4. Tendo gerado o arquivo do certificado SSL, agora é hora de instalar o certificado usando as configurações do servidor web Apache. Abra e edite o arquivo de configuração /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Certifique-se de ter as seguintes linhas entre as tags do host virtual.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Salve e saia do arquivo. Para que as alterações sejam efetuadas, reinicie o Apache usando o comando:

sudo systemctl restart httpd

5. Para que usuários externos acessem seu servidor, você precisa abrir a porta 443 através do firewall conforme mostrado.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Etapa 3: Testando o certificado SSL autoassinado local no Apache

Com todas as configurações feitas, abra seu navegador e navegue pelo endereço do seu servidor usando o endereço IP ou nome de domínio do servidor usando o protocolo https.

Para agilizar o teste, você pode considerar redirecionar o protocolo HTTP para HTTPS no servidor web Apache. Isso ocorre para que sempre que você navegar no domínio em HTTP simples, ele seja automaticamente redirecionado para o protocolo HTTPS.

Então navegue no domínio ou IP do seu servidor

https://domain_name/

Você receberá um alerta informando que a conexão não é segura conforme mostrado. Isso irá variar de um navegador para outro. Como você pode imaginar, o alerta se deve ao fato de o certificado SSL não estar assinado pela Autoridade de Certificação e o navegador registrar isso e relatar que o certificado não é confiável.

Para prosseguir para o seu site, clique na guia ‘Avançado’ conforme mostrado acima:

Em seguida, adicione a exceção ao navegador.

Por fim, recarregue seu navegador e observe que agora você pode acessar o servidor, porém, haverá um aviso na barra de URL de que o site não é totalmente seguro pelo mesmo motivo que o certificado SSL é autoassinado e não assinado pelo Autoridade Certificadora.

Esperamos que agora você possa prosseguir e criar e instalar um certificado SSL autoassinado no servidor web Apache localhost no CentOS 8.