Usando o SSL para pastas específicas

Em geral, você vai desejar usar o SSL apenas para seções específicas do site, como no caso de páginas de cadastro e de vendas, por exemplo. Na maioria dos casos, o cliente navega livremente pelo site, usando o protocolo HTTP não encriptado e acessa uma área protegida pelo SSL ao concretizar a compra ou ao acessar uma área onde precisa fornecer dados pessoais. Isso acontece por um motivo muito simples: servir páginas em HTTPS é caro em termos de processamento, de forma que encriptar o acesso a todo o site acabaria gerando um grande desperdício de recursos.

Você tem então duas opções. Usar um domínio separado para a área protegida, como “ssl.minhaempresa.com”, de forma que ela fique completamente separada do restante do site, ou proteger apenas uma pasta específica do site, tornando mandatário o uso do HTTPS ao acessá-la.

Para a primeira solução, você usaria uma configuração similar a essa dentro da configuração do Apache:

<VirtualHost *:80>
ServerName http://www.gdhn.com.br
DocumentRoot /var/www/gdhn
</VirtualHost>

<VirtualHost *:443>
ServerName ssl.gdhn.com.br
DocumentRoot /var/www/gdhn-ssl
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl_gdhn_com_br.crt
SSLCertificateKeyFile /etc/apache2/ssl/gdhn_com_br.key
SSLCertificateChainFile /etc/apache2/ssl/ssl_gdhn_com_br.ca-bundle

</VirtualHost>

Veja que, nesse caso, temos essencialmente dois sites separados, um acessível apenas via HTTP e outro apenas via HTTPS. Ao acessar o “http://www.gdhn.com.br&#8221; o visitante acessaria a pasta “/var/www/gdhn”, que conteria o conteúdo geral do site, enquanto ao acessar o “https://ssl.gdhn.com.br&#8221; ele acessaria as páginas da seção segura, armazenadas na pasta “/var/www/gdhn-ssl”. A interligação entre as duas partes seria então feita através de links, que levariam o visitante de uma seção à outra do site.

A segunda opção, usar uma pasta para o SSL, é um pouco mais elegante, mas demanda uma configuração um pouco mais cuidadosa. Imagine que a seção segura do site será armazenada dentro da pasta “/var/www/gdhn/loja”, que deverá ser acessada apenas via HTTPS.

Ao acessar o “https://www.gdhn.com.br” o visitante cairá direto na pasta segura e, ao tentar acessar o “http://www.gdhn.com.br/loja” ele será automaticamente redirecionado ao “https://www.gdhn.com.br“. Nesse caso, você utilizaria uma configuração similar a essa:

<VirtualHost *:80>
ServerName http://www.gdhn.com.br
DocumentRoot /var/www/gdhn
<Directory /var/www/gdhn/loja>
SSLRequireSSL
</Directory>
Redirect /loja https://www.gdhn.com.br

</VirtualHost>

<VirtualHost *:443>
ServerName http://www.gdhn.com.br
DocumentRoot /var/www/gdhn/loja
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl_gdhn_com_br.crt
SSLCertificateKeyFile /etc/apache2/ssl/gdhn_com_br.key
SSLCertificateChainFile /etc/apache2/ssl/ssl_gdhn_com_br.ca-bundle
</VirtualHost>

Veja que agora, usamos o domínio “www.gdhn.com.br” nas duas seções da configuração, tanto para HTTP quanto para HTTPS, entretanto, a seção com a configuração do HTTPS aponta para a pasta “/var/www/gdhn/loja”.

Como a idéia é que os arquivos da pasta possam ser acessados apenas usando o SSL, adicionamos uma diretiva para a pasta (<Directory /var/www/gdhn/loja>), dizendo que ela só pode ser acessada via HTTPS (SSLRequireSSL).

Para que os visitantes que tentarem acessar a pasta via HTTP sejam encaminhados para a área protegida, usamos uma regra de encaminhamento (Redirect /loja https://www.gdhn.com.br). Esta regra utiliza o módulo “rewrite”, que precisa estar ativo na configuração do Apache. Caso necessário, ative-o usando o comando “a2enmod rewrite”.

Finalmente, caso você queira que todo o conteúdo do site fique disponível via HTTPS e que os visitantes que tentarem acessar o http://www.gdhn.com.br/ sejam encaminhados para o https://www.gdhn.com.br, a configuração seria similar a essa:

<VirtualHost *:80>
ServerName http://www.gdhn.com.br
DocumentRoot /var/www/gdhn
<Directory /var/www/gdhn/>
SSLRequireSSL
</Directory>
Redirect / https://www.gdhn.com.br

</VirtualHost>

<VirtualHost *:443>
ServerName http://www.gdhn.com.br
DocumentRoot /var/www/gdhn/
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl_gdhn_com_br.crt
SSLCertificateKeyFile /etc/apache2/ssl/gdhn_com_br.key
SSLCertificateChainFile /etc/apache2/ssl/ssl_gdhn_com_br.ca-bundle
</VirtualHost>

Como pode ver, a configuração é quase idêntica à do exemplo anterior. As únicas diferenças são que agora a seção com a configuração do HTTPS aponta para o diretório raiz do site e a regra de redirecionamento encaminha todos os acessos feitos feitos via HTTP para o https://www.gdhn.com.br, fazendo com que o acesso a qualquer página do site seja feito via SSL.

Fonte: Link

Anúncios

~ por 3c0linux em julho 28, 2010.

 
%d blogueiros gostam disto: