Como Criar e Configurar um Certificado Autoassinado no Apache (Ubuntu)

No mundo da web, garantir que as conexões entre usuários e servidores sejam seguras é crucial. Os certificados SSL/TLS desempenham um papel vital ao criptografar essas comunicações. No entanto, ao configurar servidores para desenvolvimento ou ambientes internos de testes, pode não ser necessário adquirir um certificado de uma autoridade certificadora (CA). Nesse caso, um certificado autoassinado é uma solução prática e de baixo custo.

Este artigo oferece um guia passo a passo sobre como criar e configurar um certificado autoassinado no Apache em um sistema Ubuntu, usando a ferramenta OpenSSL.

Pré-requisitos

Antes de começar, certifique-se de que o Apache e o OpenSSL estejam instalados no seu sistema. Se você ainda não os tem, pode instalá-los com os seguintes comandos:

sudo apt update
sudo apt install apache2 openssl

Passo 1: Criar a Chave Privada

O primeiro passo para criar o certificado SSL é gerar uma chave privada. Essa chave é necessária para assinar e proteger o certificado. No terminal, execute o seguinte comando:

openssl genrsa -out chave-privada.key 2048

Este comando gera uma chave privada de 2048 bits, que será usada na criação do certificado. A chave é salva no arquivo chave-privada.key.

Passo 2: Criar uma Solicitação de Assinatura de Certificado (CSR)

Em seguida, crie uma Solicitação de Assinatura de Certificado (CSR), que contém as informações sobre o seu domínio e organização.

openssl req -new -key chave-privada.key -out requisicao.csr

Durante o processo, você será solicitado a fornecer algumas informações:

  • Country Name (Código do País): Exemplo: BR
  • State or Province Name (Estado/Província): Exemplo: São Paulo
  • Locality Name (Cidade): Exemplo: São Paulo
  • Organization Name (Nome da Organização): Nome completo da sua empresa ou organização.
  • Organizational Unit Name (Unidade Organizacional): Exemplo: TI
  • Common Name (Nome Comum): O domínio que será coberto pelo certificado (exemplo: http://www.seusite.com).
  • Email Address (Endereço de E-mail): Seu e-mail.

Essas informações serão incorporadas ao certificado.

Passo 3: Gerar o Certificado Autoassinado

Agora, com a chave privada e o CSR em mãos, podemos gerar o certificado autoassinado. O comando abaixo gera um certificado válido por 1 ano (365 dias), mas você pode ajustar o número de dias conforme necessário.

openssl x509 -req -days 365 -in requisicao.csr -signkey chave-privada.key -out certificado.crt

Isso criará o arquivo certificado.crt, que é o seu certificado SSL autoassinado.

Passo 4: Configurar o Certificado no Apache

Agora que você tem o certificado, é hora de configurá-lo no Apache.

1. Habilitar o Módulo SSL no Apache

O Apache possui um módulo específico para lidar com conexões seguras, que é o mod_ssl. Habilite-o com o seguinte comando:

sudo a2enmod ssl

Em seguida, reinicie o Apache para ativar o módulo:

sudo systemctl restart apache2

2. Configurar o Virtual Host para o HTTPS

Abra o arquivo de configuração do Apache para o seu domínio ou crie um novo arquivo de configuração para habilitar o HTTPS. Normalmente, os arquivos de configuração estão localizados em /etc/apache2/sites-available/. Exemplo de como criar um novo arquivo para o seu site:

sudo nano /etc/apache2/sites-available/seusite-ssl.conf

No arquivo de configuração, adicione o seguinte conteúdo:

<VirtualHost *:443>
    ServerName www.seusite.com
    DocumentRoot /var/www/seusite

    SSLEngine on
    SSLCertificateFile /caminho/para/certificado.crt
    SSLCertificateKeyFile /caminho/para/chave-privada.key

    <Directory /var/www/seusite>
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Neste arquivo:

  • O parâmetro SSLCertificateFile aponta para o certificado autoassinado.
  • O parâmetro SSLCertificateKeyFile aponta para a chave privada gerada no início.

3. Habilitar o Novo Virtual Host

Ative a configuração do seu novo site com o seguinte comando:

sudo a2ensite seusite-ssl.conf

4. Reiniciar o Apache

Depois de habilitar o site com SSL, reinicie o Apache para aplicar as alterações:

sudo systemctl restart apache2

Passo 5: Verificar o Certificado

Depois de configurar o certificado, você pode verificar se ele foi gerado corretamente. Use o comando abaixo para visualizar os detalhes do certificado:

openssl x509 -in certificado.crt -text -noout

Este comando exibirá todas as informações contidas no certificado, incluindo a validade e os detalhes da organização.

Passo 6: Testar a Configuração

Agora, abra seu navegador e tente acessar o domínio usando https://. Por se tratar de um certificado autoassinado, o navegador exibirá um aviso de segurança, informando que o certificado não é de uma autoridade confiável. Esse comportamento é esperado e pode ser ignorado em ambientes de teste.

Considerações Finais

Certificados autoassinados são uma solução viável para ambientes de desenvolvimento, laboratórios ou testes internos. Eles fornecem uma forma simples de habilitar criptografia SSL sem a necessidade de adquirir certificados de autoridades certificadoras externas. No entanto, para ambientes de produção, é recomendável usar um certificado emitido por uma CA confiável, como o Let’s Encrypt, que oferece certificados gratuitos.

Seguindo este guia, você poderá criar e configurar rapidamente um certificado autoassinado no Apache, garantindo que suas comunicações sejam criptografadas e seguras em seu ambiente de desenvolvimento.

Edvaldo Guimrães Filho Avatar

Published by

Categories:

Leave a comment