Configuração de um servidor Apache com SSL no Windows 2000/XP
|
1. Introdução Introdução
Este documento foi escrito com intuito ajudar na instalação do servidor web Apache no sistema operativo Microsoft Windows 2000 e XP. Trata-se apenas de um guia e não pretende substituir os manuais de utilização do Apache e do openssl.
Para facilitar na tarefa de criação e geração de certificados é necessário configurar o ficheiro openssl.cnf.
Criação chave do CA com 1024 bit
openssl genrsa -out ssl.key/CA/CA.KEY
Criação do pedido de certificado
openssl req -new -key ssl.key/CA/CA.KEY \
–out ssl.key/CA/CA.CSR –config openssl.cnf
Certificado “Self-sign”
openssl x509 –req -days 365 -in ssl.key/CA/ CA.CSR \
–out ssl.key/CA/ CA.CRT –signkey ssl.key/CA/CA.key
converter para pem
openssl x509 -in ssl.key/ca/CA.CRT –outform DER \
-out ssl.key/ca/CA.der
2.1.2. Geração de certificados para o web-server
Criação chave do CA com des3 como método de encriptação
openssl genrsa -des3 -out ssl.key/server/keys/localhost.KEY
Criação do pedido de certificado
openssl req -new -key ssl.key/server/keys/localhost.KEY \
-out ssl.key/server/requests/localhost.CSR \
–config openssl.cnf
Assinar certificado com base no CA
openssl ca –config openssl.cnf \
-in ssl.key/server/requests/localhost.CSR \
-cert ssl.key/CA/CA.CRT \
–keyfile ssl.key/CA/CA.KEY \
-out ssl.key/server/certificates/localhost.CRT
2.1.3. Geração de certificados para o web-browser
Criação chave do CA com des3 como método de encriptação
openssl genrsa -des3 -out ssl.key/user/keys/user.KEY
Criação do pedido de certificado
openssl req –new \
–key ssl.key/user/keys/user.KEY \
-out ssl.key/user/requests/user.CSR \
–config openssl.cnf
Assinar certificado com base no CA
openssl ca –config openssl.cnf \
-in ssl.key/user/requests/user.CSR \
-cert ssl.key/CA/CA.CRT \
–keyfile ssl.key/CA/CA.KEY \
-out ssl.key/user/certificates/user.CRT
Conversão de certificado para formato PKCS#12 para importação no
webbrowser
openssl pkcs12 -export –clcerts \
-in ssl.key/user/certificates/user.CRT \
–inkey ssl.key/user/certificates/user.KEY \
-out ssl.key/user/certificates/user.P12
3. Configuração do Apache
3.1. Configuração base
Na webroot do apache, no nosso caso /web/webroot, três directorias:
· normal, aonde temos apenas ssl activado.
· pro_normal, aonde pretendemos uma protecção básica.
· pro_cert, aonde pretendemos apenas utilizadores com certificados válidos.
· pro_sel_cert, aonde pretendemos apenas utilizadores escolhidos com certificados válidos.
3.2. Activação do SSL para todas as áreas
Para ter conteúdos protegidos com ssl, temos duas soluções:
· Proteger todo o site, removendo o porto 80 mantendo o porto ssl 443.
· Proteger cada directoria pretendendo no ficheiro httpd.conf.
Vou apresentar o segundo caso.
Assim é necessário alterar, no httpd.conf, a configuração das pastas pro_normal, pro_cert e pro_sel_cert para ser alvo de protecção ssl.
Um exemplo dessa alteração é:
<Directory /web/webroot/pro_normal/>
SSLRequireSSL
</Directory>
3.3. Restrição pelo método clássico usando o htpassfile
Para definir que utilizadores podem aceder a directoria é necessário criar um ficheiro contendo os login/password dos utilizadores autorizados. Temos de criar então o ficheiro /web/apache/conf/htpassfile.txt.
Essa gestão é feita com base no comando htpasswd do apache. Como exemplo, dois utilizadores, admusr e usr1, os comandos serão algo como:
htpasswd –bc /web/apache/conf/htpassfile.txt admusr pass
htpasswd –c /web/apache/conf/htpassfile.txt usr1 pass
A opção c permite que o htpasswd cria o ficheiro se não existir.
A opção b indica ao htpasswd que a password é definida como parâmetro.
Dentro da pasta pro_normal, é necessário criar um ficheiro .htaccess contendo o seguinte:
AuthUserFile /web/apache/conf/htpassfile.txt
AuthName “SR Autenticação”
AuthType Basic
require valid-user
Assim indicamos ao Apache que todos os acessos nesta directoria são para ser validados com base no ficheiro htpassfile.txt
3.4. Restrição usando certificados
Para restringir os utilizadores para apenas os que tenham certificados compatíveis com o do servidor é necessário configurar no ficheiro httpd.conf do apache de seguinte maneira:
<Directory /web/webroot/pro_cert/>
SSLRequireSSL
SSLVerifyClient require
</Directory>
3.5. Restrição usando certificados controlados.
Para restringir os utilizadores para apenas os que tenham certificados compatíveis com o do servidor e escolhidos é necessário configurar no ficheiro httpd.conf do apache de seguinte maneira:
<Directory /web/webroot/pro_cert/>
SSLRequireSSL
SSLVerifyClient require
SSLRequire %{SSL_CLIENT_S_DN_O} eq “User xpto”
</Directory>
Nota: Podemos alterar a configuração do SSLRequire para validar com base noutros parâmetros tais como
· SSL_CLIENT_S_DN_CN, alcunha do utilizador, “Common Name”
· SSL_CLIENT_S_DN_O, nome da organização.
· SSL_CLIENT_S_DN, Nome completo do utilziador
· SSL_CLIENT_CERT, o certificado em base 64.
3.6. Testes.
Aqui estão exemplos de testes com o FireFox e o Internet Explorer.
Figura 1 – Falha na tentativa de acesso aos conteúdos ssl.
Figura 2 – Teste com método de autenticação básico.
Figura 3 – Pedido da palavra chave no FireFox.
Foi interessante ver que o firefox, ao contrário do IE, pede a palavra-chave do certificado para poder ser utilizado.
Figura 4 – Pedido de certificado no IE.
Deixe um comentário
Tem de iniciar a sessão para publicar um comentário.
2 Responses to Configuração de um servidor Apache com SSL no Windows 2000/XP