Sexta-feira, 05 de agosto de 2005 às 14h35

Instalando SSL no Apache2 em ambiente Windows

Este artigo assume que você já tenha instalado e funcionando o Apache2 em um Windows 2000/XP/2003. Neste artigo, o Apache2 está instalado em um Windows XP Professional com SP2.

Arquivos Necesários

Você vai precisar fazer o download da versão para Windows do OpenSSL (http://www.slproweb.com/download/Win32OpenSSL-v0.9.8.exe). Para instalar o OpenSSL, dê um clique duplo sobre o arquivo Win32OpenSSL-v0.9.8.exe e siga os passos abaixo:

openssl-01.gif

Tela de boas vindas do programa de instalação do openSSL. clique em "Next >" para ir para a tela com a licença de uso do OpenSSL.

openssl-02.gif

Licença de uso para o OpenSSL. Leia os termos e selecione uma opção para aceitar ou não os termos. Caso você não aceite os termos da licença, o programa de instalação será encerrado. Clique em "Next >".

openssl-03.gif

Escolha o diretório onde vão ser instalados os arquivos do OpenSSL. Aconselho a usar o caminho padrão oferecido como sugestão pelo programa de instalação. Clique em "Next >".

openssl-04.gif

Escolha o nome e o local onde os atalhos no menu iniciar devem ser criados. Aconselho a usar o caminho padrão oferecido como sugestão pelo programa de instalação. Clique em "Next >".

openssl-05.gif

Revise as opções que você escolheu anteriormente. Caso estejam todas corretas, clique em "Install".

openssl-06.gif

O programa de instalação irá copiar todos os arquivos para seu disco rígido.

openssl-07.gif

Após concluída a cópia dos arquivos, clique em "Finish" para encerar o programa de instalação.

Você também vai precisar fazer o download do arquivo ssl.conf e colocar dentro do diretório Apache2\conf.

Criar o certificado de teste

Abra em "Prompt de comando". Navegue até o diretório "/bin" em sua instalação do OpenSSL.

Clique em "Iniciar" e depois em "Executar". Irá aparecer a seguinte tela. Em seguida execute o comando cd C:\OpenSSL\bin.

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator> cd C:\OpenSSL\bin
C:\OpenSSL\bin>

Estou logado no Windows XP com o usuário "Administrator".

Agora vamos criar o certificado de teste para colocarmos em nosso servidor. No "Prompt de comando". execute o seguinte comando "openssl req -config openssl.cnf -new -out meu-servidor.csr" e preencha as informações que o programa lhe solicita

C:\OpenSSL\bin>openssl req -config openssl.cnf -new -out meu-servidor.csr
Loading "screen" into random state - done
Generating a 1024 bit RSA private key
.++++++
............++++++
writing new private key to "privkey.pem"
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ".", the field will be left blank.
-----
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Ceara
Locality Name (eg, city) []:Fortaleza
Organization Name (eg, company) [Internet Widgits Pty Ltd]:lscalado.com
Organizational Unit Name (eg, section) []:Tecnology
Common Name (eg, YOUR name) []:www.lscalado.com
Email Address []:lscalado@blog.lscalado.com
Please enter the following "extra" attributes
to be sent with your certificate request
A challenge password []:secretpass
An optional company name []:secretpass

C:\OpenSSL\bin>

Você pode substituir "meu-servidor.csr" para o nome que você quiser, seguido da extenção ".csr". Quando você for solicitado a preencher o "Common Name", dê o nome exato de seu domínio (ex. www.lscalado.com), isso significa que o certificado pertence a esse domínio. Os browsers emitem um alerta quando esse nome não é o mesmo do domínio.

Agora execute o comando "openssl rsa -in privkey.pem -out my-server.key". Isto remove o passphrase da chave privada. Você tem que entender, isto significa que my-server.key só deve ser legível pelo servidor Apache e o Administrador. Você DEVE apagar o arquivo ." rnd" porque contém a informação de "entropy" para criar a chave e poderia ser usado para ataques criptográficos contra sua chave privada.

Agora execute o comando "openssl x509 -in meu-servidor.csr -out my-server.cert -req -signkey my-server.key -days 365". Esse comando cria um certificado assinado que você pode usar até consegur um certificado "real" de uma autoridade certificadora. (Isso é opcional: se você conhecer seus usuários você pode lhes dizer que instalem o certificado em seus browsers).

Nota: esse certificado expira em um ano você pode aumentar isso alterando o valor após o parâmetro "-days 365".

Crie um novo diretório dentro chamado "ssl" dentro do diretório "Apache2\conf" e copie os arquivos "my-server.key" e" my-server.cert" para ele.

Configurando Apache e mod_ssl

Faça o download do mod_ssl e coloque no diretório "Apache2\modules".

Abra o arquivo "httpd.conf" que você encontra em "Apache2\conf" e encontre a diretiva "LoadModule" e adicione a seguinte linha:

<IfModule mod_ssl.c>
Include conf/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
</IfModule>

Após </IfModule> adicione:

SSLMutex default
SSLRandomSeed startup builtin
SSLSessionCache none

Abra o arquivo ssl.conf e configure corretamente o seu domínio e DocumentRoot(o local onde você vai servir seus documentos seguros). Por exemplo em meu servidor os arquivos protegidos com SSL ficam em:

DocumentRoot "D:/ ssl-htdocs"

Reinicie o Apache e acesse https://localhost para você ver localmente se esta tudo correto e depois acesse o domínio que você configurou como por exemplo https://www.lscalado.com.

Finalizando.

Se você tiver alguma questão, entre em contato comigo pelo e-mail leonardo@blog.lscalado.com. Eu também quero dar os créditos a:

Balázs Bárány
Por seu artigo que serviu como base para esta matéria http://tud.at/programm/apache-ssl-win32-howto.php3

Matt Raible
Por seu artigo, que também serviu como base. http://raibledesigns.com/wiki/Wiki.jsp?page=ApacheSSL

3 comentários

 Denis Solano
07/08/2005 19h31

Configurando SSL no Apache2 em ambiente Windows

Bem, gostei muito do seu artigo... Gostaria de saber se isto serve para servidores IIS? se sim como confugurar? veleu gostei muito mesmo

 Joanilson Bertoloti
26/04/2006 17h10

IIS

Como fazer Isso no IIS...valeu...

 Diogo Alcântara
06/09/2008 15h26

Não rolou

Leonardo, qnd tentei a seguinte linha de comando

C:\OpenSSL\bin>openssl req -config openssl.cnf -new -o
O sistema não pode executar o programa especificado.

Só da isto, e agora qnd tento rodar o apache não rola tbem.

Pasta de C:\OpenSSL\bin

06/09/2008 15:24 <DIR> .
06/09/2008 15:24 <DIR> ..
28/05/2008 01:48 5.868 CA.pl
25/06/2008 22:51 996.352 libeay32.dll
16/09/2005 05:20 9.687 openssl.cfg
25/06/2008 22:52 312.832 openssl.exe
06/09/2008 15:24 <DIR> PEM
25/06/2008 22:52 188.928 ssleay32.dll
5 arquivo(s) 1.513.667 bytes

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Leonardo Calado trabalha profissionalmente com tecnologias de internet desde 2000, possui experiência em servidores web (Apache, IIS, Xitami e etc), sistemas operacionais baseados em UNIX e tecnologias Microsoft. Também presta consultoria na área de desenvolvimento e gerência de projetos. Quando encontra algum tempo livre entre trabalho, esposa e filha gosta de estudar novas tecnologias, pesquisar tendências e codificar em C/C++ fazendo alterações em projetos opensource.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.