SSL, conforme descrição na Wikipedia,
provê a privacidade e a integridade de dados entre duas aplicações que estejam se comunicando pela Internet. Isto ocorre através da autenticação das partes envolvidas e da criptografia dos dados transmitidos entre as partes. Esse protocolo ajuda a prevenir que intermediários entre as duas pontas da comunicação tenham acesso indevido ou falsifiquem os dados sendo transmitidos.
Em outras palavras, SSL evita que nossa sessão dentro de uma aplicação seja roubada por uma pessoa mal intencionada. Como ela poderia fazer isso? Simples, utilizando alguma ferramenta que capture os dados sendo transmitidos entre a aplicação cliente de Pablito e o servidor e utilizando eles para se fazer passar por Pablito.
Nesse artigo vamos configurar o servidor Apache Http para trabalhar com SSL utilizando o módulo mod_ssl. Estarei utilizando a versão 2.2.8 do servidor Apache Http.
O primeiro passo e ir no arquivo
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
A primeira linha carregara o modulo encarregado de fazer o Apache trabalhar com SSL dando pra ele o nome de ssl_module. A segunda linha dirá ao apache que tem que ler o arquivo conf/extra/httpd-ssl.conf, onde teremos algumas configurações exclusivas do trabalho com SSL. A terceira linha é um comando condicional que ira executar os comandos dentro dele no caso que o módulo especificado tenha sido carregado. A quarta e quinta linha definem a fonte que ira oferecer o PRNG (Pseudo Random Number Generator) utilizado para a conexão SSL. Builtin é um método próprio do Apache para gerar o PRNG e nesse caso estamos dizendo que queremos utilizar ele no momento de levantar o servidor (startup) e no momento de ser criada uma conexão SSL (connect).
Sinceramente não entendo a fundo os últimos dois comandos, mas para mais informação podem visitar a documentação sobre SSLRandomSeed na mesma página do mod_ssl. Se alguem tiver uma explicação boa, seja bem vinda nos comentários. Se aprender mais, irei colocar o aprendido num post.
Talvez tenham se perguntado por que existem configurações relacionadas a SSL no arquivo httpd.conf se tínhamos combinado que todo o relacionado a SSL ia ser configurado num arquivo aparte. O arquivo do Apache vem assim por possivelmente algum motivo que eu desconheço e por isso eu deixei assim, mas se preferirem acho que não daria nenhum problema mover aquelas linhas para o nosso arquivo de configurações do SSL.
Atualmente estou trabalhando num ambiente Windows, pelo que vou ter que descarregar e instalar o OpenSSL, que se encarregara de criar as chaves e o certificado necessário para poder autenticar uma conexão. Em sistemas Linux me parece que o OpenSSL vem junto com o Apache. Chegando na minha maquina com meu querido Ubuntu farei um teste.
Os arquivos binários do OpenSSL para Windows podem ser baixados de aqui.
Uma vez instalado o Apache e o OpenSSL, vamos realizar nossas configurações.
O primeiro passo é configurar nosso host virtual no arquivo httpd-ssl.conf .
O segundo passo é criar nosso certificado. Para saber como criar o certificado podem ler parte do excelente artigo de Leonardo Calado também sobre SSL em Apache. Leonardo descreve como criar o certificado na seção Criar o certificado de teste.
Após isso somente falta testar nossa aplicação. Para isso basta inciar nosso servidor Apache e acessar https://domínio:porta
onde domínio e porta correspondem ao configurado no host virtual.
2 respostas ate agora ↓
1 Renan // May 10, 2008 at 8:02 pm
O SSL é interessante, mas aquela limitação de somente um domínio por IP é chata.
Agora tem também o SNI, que visa resolver esse problema. Assim vai ser possível utilizar conexão segura para sites no mesmo IP.
Um tutorial interessante dele existe aqui:
http://gentoo-wiki.com/HOWTO_Apache_with_Name_Based_Hosting_and_SSL
Só que até os browsers estarem atualizados, não dá pra usar, já que muita gente não usa a última versão…
2 Diego Carrion // May 11, 2008 at 3:59 am
Renan, obrigado pelo complemento. Não conhecia o SNI mas andei lendo o link que você passou e parece muito legal mesmo.
Vou tentar fazer um artigo sobre ele nesses dias.
Valeu!
Deixar um comentário