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
| ||||
| ||||
|
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).