Configurar certificado SSL auto-assinado para o Apache (HTTPS)

Tags: ssl apache https

Em determinadas ocasiões, pode ser necessário que exista uma camada de criptografia, que garanta a segurança das informações nas soluções WEB. Podemos citar por exemplo, a utilização de notificações push no navegar e a comunicação com os serviços da AWS. A utilização desses recursos forçam a necessidade de existir essa camada.

Certificados SSL

Para resolver o problema contextualizado, precisamos gerar um certificado SSL. Esse certificado vai adicionar essa camada de criptografia ao protocolo HTTP, garantindo que caso alguém intercepte as requisções, não consiga entender o seu conteúdo (HTTPS).

Será apresentado, como utilizar certificados SSL auto-assinados para ambiente de homologação. Esse tipo de certificado SSL, é gerado para um domínio fictício e que somente existe localmente (vhost). Portanto, deve ser evitado em produção. 

Para iniciar, o OpenSSL  precisa estar instalado na máquina. Rode o comando abaixo, se der erro, ele não está instalado:

openssl version

Com o OpenSSL devidamente instalado para o seu correspondente sistema operacional:

  1. Abra o CMD ou o Git Bash, e vá para o diretório de sua preferência, onde ficarão os arquivos do precesso;
  2. Crie a chave privada (.key) e o pedido de assinatura de certificado (.csr), com o seguinte comando:
    openssl req -newkey rsa:2048 -nodes -keyout nome-solucao.key -out nome-solucao.csr
  3. Nesse momento, será solicitado algumas informações. Exemplo de preenchimento:
  4. Crie o certificado com o seguinte comando:
    openssl x509 -signkey nome-solucao.key -in nome-solucao.csr -req -days 365 -out nome-solucao.crt

Ao terminar esse processo, no diretório que os comandos foram executados deve existir três arquivos:

Habilitar o SSL no Apache e configurar o certificado no vhost

Para que o Apache entenda nosso certificado, precisamos habilitar o módulo de SSL e colocar instruções no vhost para localizar o certificado gerado.

Levando em consideração que o Apache está instalado em "C:\xampp\apache\":

  1. Abra o arquivo "httpd.conf" do Apache, localizado em "C:\xampp\apache\conf\";
  2. Procure pela linha "LoadModule ssl_module modules/mod_ssl.so", e caso tenha um cerquilha (#) no início dessa linha, remover;
  3. Mova os três arquivos gerados no processo anterior, para as suas respectivas pastas no Apache:
    • "nome-solucao.key", deve ser movido para "C:\xampp\apache\conf\ssl.key";
    • "nome-solucao.csr", deve ser movido para "C:\xampp\apache\conf\ssl.csr";
    • "nome-solucao.crt", deve ser movido para "C:\xampp\apache\conf\ssl.crt".
  4.  Abra o arquivo "httpd-vhosts.conf" do Apache, localizado em "C:\xampp\apache\conf\extra\". Encontre o seu vhost;
  5. Mude a porta de 80 para 443, e adicione as seguintes linhas no vhost:
    SSLEngine On
    SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/nome-solucao.crt"
    SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/nome-solucao.key"  
  6. No final, o seu vhost deve estar similiar ao demonstrado abaixo:

Agora basta reiniciar o Apache, e será possível acessar o seu vhost utilizando HTTPS.

VOLTAR

Outros Artigos

Nenhum artigo relacionado.