Unidade D - Segurança no Servidor Apache

D.6. Criptografia

Como vimos, a troca de informações entre o cliente e o servidor HTTP ocorre em texto plano. Entretanto, há caso onde as informações que são trocadas devem ser protegidas. Para adicionar uma camada de segurança neste acesso é possível configurar o uso de criptografia de dados. O Protocolo HTTP possui uma variação chamada HTTPS que permite a troca de informações em modo seguro sob SSL (Secure Sockets Layer). O Apache também possui suporte a esse protocolo. Para habilitar a criptografia no Apache deve-se habilitar o modulo SSL:

#a2enmod ssl

Com a habilitação do módulo, podemos criar um certificado que será utilizado para encriptar as mensagens trocadas entre os hosts. Estes certificados são geralmente criados por unidades certificadoras que garantem a identidade dos servidores. No nosso caso, vamos criar um certificado digital autoassinado apenas para exemplificar como esse processo ocorre. O certificado será criado no formato x509, com validade de 365 dias, com o seguinte comando:

# openssl  req  $@  -new  -x509  -days  365  -nodes  -out /etc/apache2/apache.pem   -keyout    /etc/apache2/apache.pem

 

 

Mais informações sobre as opções disponíveis para a criação de certificados digitais consulte: http://www.openssl.org/docs/apps/req.html

 

Após a execução do comando serão solicitadas algumas informações utilizadas na  identificação do site como se pode ver na Figura D3.2.2.1:

O nosso certificado será criado no diretório /etc/apache2/ e armazenado no arquivo apache.pem. Para que o servidor possa utilizá-lo é necessário ajustar suas permissões de acesso

# chmod  755 /etc/apache2/apache.pem

Após a criação do certificado, basta configurar o site para utilizá-lo através do módulo SSL. Para tanto, basta criar um novo arquivo de configuração:

# cd  /etc/apache2/sites-avaliable
# gedit site1-ssl

No arquivo de configuração do site, vamos adicionar o seguinte conteúdo

<VirtualHost 192.168.1.10:443>
    DocumentRoot /var/www/site1
    SSLEngine On
    SSLCertificateFile /etc/apache2/apache.pem
  <Directory /var/www/site1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>
</VirtualHost>

Como você pode perceber, na cláusula <VirtualHost> (linha 1) além do endereço IP estamos informando que o acesso ao site deverá ocorrer pela porta 443 (HTTPS). Nas linhas 3 e 4 cientificamos que o apache deverá utilizar o módulo SSL nesta conexão e deverá utilizar para tanto o certificado armazenado no caminho indicado. Para colocar este site no ar devemos habilitá-lo e, na sequência, reiniciar o apache:

#a2ensite site1-ssl
#invoke-rc.d apache2 restart

Para testar basta acessar novamente o site através do protocolo de acesso seguro https://192.168.1.10. Você verá que para realizar o acesso o seu certificado será validado (Figura D3.2.2.2).

Você poderá verificar também que, após realizar  o acesso no canto inferior esquerdo, é exibido um símbolo que indica que o acesso que está sendo realizado está em modo seguro (Figura D3.2.2.3).