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:
- 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.
- 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.
- 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:
- Uma instância do servidor CentOS 8.
- Servidor web Apache instalado no servidor
- 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.