Batalhei bastante com isso, mas nunca de forma contínua. Sempre foram de saltos, afinal também preciso estudar, trabalhar e dividir minhas atenções com entes queridos.
Para mim a estação de desenvolvimento ideal é aquela que simula os recursos disponíveis nos servidores. Então além de um servidor web, também deve ter um servidor de e-mail, interpretadores de código (PHP, Perl, Python...), container Java (Tomcat), servidores de bancos de dados (MySQL, Postgre), e por aí vai... Além de ferramentas que ajudem em outras funções, como programar (Eclipse, Quanta Plus, Bluefish) e criar layouts (GIMP, Inkscape)...
Faz um tempão que eu estava querendo colocar aqui SSL, para simular ambientes de produção onde se reproduzem operações seguras, em geral financeiras; hoje realizei. Passei o final da tarde da segundona de carnaval aprontando essa e vou compartilhar aqui com vocês.
O ambiente: Ubuntu 6.06 + Apache 2 (instalado pelo Synaptic) + OpenSSL (também instalado pelo Synaptic).
Creio que as únicas diferenças significativas aqui para que este tutorial se torne válido para outros sabores do GNU/Linux, e formas de instalação (via pacotes RPM, compilando na unha, por outro gerenciador de pacotes) são:
- a localização de alguns arquivos e paths;
- a instalação pelo Synaptic deixa o httpd.conf bem fragmentado. Citarei vários arquivos aqui que nada mais são que partes do httpd.conf que foram separadas.
Bem vamos ao desafio:
Quero que uma parte do site seja pública (passando por uma conexão comum) e outra privada (passando por SSL).
Então criei um diretório para o site e dois subdiretórios, assim:
/var/www/meusite/
/var/www/meusite/public/
/var/www/meusite/private/
Quero que a parte pública seja acessada como "http://www.meusite.com/" e que a parte privada seja acessada como "https://secure.meusite.com/
O primeiro passo é instalar os pacotes. Deixo isso por sua conta o que importa é ter o Apache 2.0 e o OpenSSL instalados. Tem muitos tutoriais de como se fazer isso e como não vou reinventar a roda, dê uma boa lida nas documentações. Estes tutoriais aqui podem dar uma simplificada na sua vida: este e este.
O que interessa é dividir o site em duas partes. Edite o arquivo /etc/hosts. Acrescente lá os sites que você quer. Eu acrescentei as linhas:
127.0.0.1 meusite www.meusite.com
127.0.0.1 secure.meusite secure.meusite.com
127.0.0.1 secure.meusite secure.meusite.com
E dê uma conferida no arquivo "/etc/host.conf", ele deve conter uma linha assim:
order hosts,bind
Isso significa que quando uma requisição for feita, sua máquina olhará primeiro no arquivo hosts que acabamos de editar, depois vai para os resolvedores de nome. Isso é o que permite que você possa ter e acessar um site com o nome www.algumacoisa.com no seu PC sem conflitar com um da internet (note que se você nomear o site com algum nome existente como google.com, por exemplo - você não conseguirá mais acessar este site pelo nome, já que o arquivo /etc/hosts vai resolver ele antes de procurar nos resolvedores de nome!).
Agora para configurar os virtual hosts no Apache.
Para o parte pública acrescente:
<VirtualHost *>
ServerName www.meusite.com
DocumentRoot /var/www/meusite/public
</VirtualHost>
ServerName www.meusite.com
DocumentRoot /var/www/meusite/public
</VirtualHost>
No httpd.conf ou no arquivo /etc/apache2/sites-available/default
Se você criou o arquivo /etc/apache2/sites-available/ssl
acrescente isso como conteúdo dele:
NameVirtualHost *:443
<VirtualHost *:443 >
ServerName secure.meusite.com
DocumentRoot /var/www/meusite/private
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>
<VirtualHost *:443 >
ServerName secure.meusite.com
DocumentRoot /var/www/meusite/private
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>
Ou acrescente isso depois dos outros virtual hosts comuns.
Isso deve dar conta do recado.
Confira se você não esqueceu de colocar a porta 443 na escuta. No httpd.conf ou no ports.conf deve estar uma linha assim:
Listen 443
Também não esqueça de gerar e corrigir os nomes e paths dos certificados.
Se tudo der certo, depois de você reiniciar o Apache, abra um navegador e digite:
http://www.meusite.com/
https://secure.meusite.com/
E veja o resultado =]
Até mais.
-----------
keepReading