Apache: Ativando o protocolo HTTPS (HTTP + SSL)

Por padrão, a instalação básica do Apache não contempla a ativação do protocolo HTTPS, somente o HTTP é suportado. Entretanto, muitas vezes, necessitamos utilizar, por medida de segurança, o protocolo HTTPS.

O protocolo HTTPS, “adiciona” uma camada extra de segurança por meio da criptografia fornecida pelo SSL, que faz uso de criptografia assimétrica e requer a utilização de um par de chaves (Pública e Privada). Desta forma, para habilitar o modulo ssl, e consequentemente o protocolo HHPS, execute passos descritos a seguir

Primeiro Passo: Ativando o suporte ao SSL

Para ativar o modulo SSL do Apache podemos utilizar o comando:

sudo a2enmod ssl

Em seguida precisamos reiniciar  o Daemon do Apache

sudo service apache2 restart

Para verificarmos se o o suporte foi habilitado, podemos executar o comando:

sudo lsof  -i | grep apache | grep -i https

Caso o procedimento tenha funcionado corretamente, o ultimo comando deve gerar uma saída semelhante a apresentada a baixo:

apache2 13197          root    6u  IPv6 2667199      0t0  TCP *:https (LISTEN)
apache2 13205      www-data    6u  IPv6 2667199      0t0  TCP *:https (LISTEN)
apache2 13206      www-data    6u  IPv6 2667199      0t0  TCP *:https (LISTEN)
apache2 13207      www-data    6u  IPv6 2667199      0t0  TCP *:https (LISTEN)
apache2 13208      www-data    6u  IPv6 2667199      0t0  TCP *:https (LISTEN)
apache2 13209      www-data    6u  IPv6 2667199      0t0  TCP *:https (LISTEN)

Ou seja, o daemon do Apache já está “escutando” nas porta associada do protocolo HTTPS (443/TCP)

Segundo Passo: Gerar e ativar as chaves públicas e privadas

O serviço associado ao protocolo HTTPS só irá funcionar, no Apache, depois que (i) gerarmos o par de chaves (privada e pública) utilizada na criptografia assimétrica, (ii) habilitarmos o arquivo de configuração do site “default-ssl” e finalmente recarregarmos as configurações do Apache. Para executar estes procedimentos execute os comandos abaixo:

sudo make-ssl-cert generate-default-snakeoil --force-overwrite
sudo a2ensite default-ssl
sudo service apache2 reload

Para verificar se o procedimento foi executado com sucesso, podemos utilizar o comando:

sudo lsof -i | grep apache

O qual deve apresentar uma saída semelhante à:

apache2 8772          root    3u  IPv6  36901       TCP *:www (LISTEN)
apache2 8772          root    5r  IPv6  37310       TCP *:https (LISTEN)
apache2 8828      www-data    3u  IPv6  36901       TCP *:www (LISTEN)
apache2 8828      www-data    5u  IPv6  37310       TCP *:https (LISTEN)
apache2 8829      www-data    3u  IPv6  36901       TCP *:www (LISTEN)
apache2 8829      www-data    5u  IPv6  37310       TCP *:https (LISTEN)
apache2 8830      www-data    3u  IPv6  36901       TCP *:www (LISTEN)
apache2 8830      www-data    5u  IPv6  37310       TCP *:https (LISTEN)
apache2 8831      www-data    3u  IPv6  36901       TCP *:www (LISTEN)
apache2 8831      www-data    5u  IPv6  37310       TCP *:https (LISTEN)
apache2 8832      www-data    3u  IPv6  36901       TCP *:www (LISTEN)
apache2 8832      www-data    5u  IPv6  37310       TCP *:https (LISTEN)

Finalmente, para verificar se o serviço está funcionamento corretamente, abra um navegador e tente acessar o serviço “https” na máquina que acaba de ser configurada.