Certificação Digital no Linux - Apache2

Nesse artigo iremos explicar o conceito básico de certificação digital, mostraremos como se gera uma requisição de certificado, chaves privadas e públicas e configurações https do Apache2 para que nosso site possua certificado digital.

[ Hits: 162.326 ]

Por: Bruno Lima Queiroz em 03/04/2008


Gerando uma "Chave Privada"



Depois de instalado o Open-SSL e o Apache corretamente, vamos dar início a um processo simples, mas que se não for bem definido e as etapas seguidas corretamente, o sucesso no final não será possível.

É importante entendermos o porquê de se gerar uma chave privada, e qual é o seu conteúdo. Bem, uma "Chave Privada", será um arquivo criptografado que conterá informações da máquina local, máquina onde teremos nosso WebServer e configuraremos nosso certificado digital. Esse primeiro processo é bem simples:

Gerando uma "Chave Privada":

1º Passo - Vamos entrar no diretório padrão do apache:

# cd /usr/local/apache2/

2º Passo - Criaremos um diretório dentro da pasta padrão do apache para guardarmos nossos certificados:

# mkdir certificados
# cd certificados


3º Passo - Dentro no diretório /usr/local/apache2/certificados/, vamos executar o seguinte comando:

# openssl genrsa -des3 -out chave_privada.key 2048

O comando acima gera uma chave privada de 2048 Bits usando o algoritmo de criptografia "des3". O conteúdo da chave gerada e o procedimento acima descrito deve ser algo similar ao mostrado abaixo:

Generating RSA private key, 2048 bit long modulus
..........................+++
............................................................+++
e is 65537 (0x10001)
Enter pass phrase for chave_privada.key:
Verifying - Enter pass phrase for chave_privada.key:

Onde "Enter pass ..." será onde você irá fornecer uma senha para sua chave privada e "Verifying...", você irá confirma essa chave.

A senha que foi pedida para gerar nossa "chave privada" tem que ser bem guardada, pois será a mesma para gerarmos nossa requisição, e a mesma que nosso certificado final irá ter.

O conteúdo do arquivo gerado "chave_privada.key" deverá ter seu conteúdo similar ao mostrado abaixo:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,E7B3E16C75B9B3A7

/gHPQa+nvYTAFGGkGoGShAFv+l5TR4cKuphmH/XkfoequQGJZi4eT7KOiEIyC3FZ
0jOG5NY7ZL5z6Ds1/0j/LP7aefgHoqW+/oxHmSZ+GI2il5DxTTqsVot5g9Z08+lv
4yvFksBs/biC9MTIx2/3K48aiH7rSOoDJK4LwEXeGhEakZ8T7lwXHb4L+qNdqigV
dUmH8QU6j6lwp2cyGd4SU2M8HkD5W1ZnWJbjyhFPcE0atKx25yeBI0yx9p3N7/sg
SP8nIHrZ8wy0rU0uzTLsze4YWp75Vh2Zb2eiX7yivomrqbEVF4+/+CcxnT4kEaRb
/N5IPAkNKucx5PEfl47qSDUNf88tVzjtk/ENQ6wH+koftu7IMHB1nmYuV57Be+Tr
ifcj+VsG5kT9gi0dUFcrODQRhFf8Wi9wTDJpQ1x5fSUa38L8dZCR+Tr90zcIaHN0
MNmdxO9b9Fat6UH6deyOMoh6GIcjgeO2+HNjnvqwJVKCsYwbWMJvQdudb2pz2fiu
bHQGl9g2VvmkZ2qHX68WPsHljvCXyNzeTtMj7pIxEEnejzF/Oqfn1mum/t3ef+Sk
hnaOkrUBMxJtgf983/6Ygi/IOQsjidfmR8y1lqzw36M8SXjgZVrJWwWsnxUG9zZd
oe3cuJwjpLGMmnSfMbsqwU4T/NvXArdDuT8GOv9RjfUkXQV8zxUcFn5vT0Q5qkz6
tO7gFUxk0zYwPkasCV0iKlFEtd9IUO9Kc6+Ru5rNLvu35NjXEhQfIMiUR+7Ef+lL
JFIpfd0ILAnPKRywDJcfT5sNQvDC9IYU7ScoX0zP/d7Jkt6sXtxWbFJKjGPz30iS
dMshNLoNsQIv4vpUUvPzNYnNxj2U361SO8oXNfj/OymjD1Z/FrT3cfdxsFt8UvEO
VzDYDPU0eQES7noH96fNQB3+kgw+j7acl87y2T8nDxDGYxUBolWvES9sIDgCTT5d
MwJ6OdRvLs9C5oylr/SplyTV0f+XZeOILZkpbWAvY0gjtzsqImr4TYi2fHhaVznS
gpncswBoT/sSuWq2uvOkbZCafeEdbckSCft5BH8MyuMpYXl4xsvn2rrM9S1p2ESx
eRAyqzdWaYpy20DvJrGJBdo/raI5MRHbuEPSm5HyrXngxMPf0wdpsWyAU+NLktuj
xIu+mG1Ll77H7nmxvqlcizEl2keeGTmzrdqDfyaxdowpZu3FkB37GaYKR2+i9kU4
1Vyn2Y13sgufp7233xBfrweKYxcKdPWMjU0s6t9/kXo/VMHemMF9tiQEZxSbdZ+y
5nqArpqLJDw1C104uDqqrtihI9WU53M0aAUBgPZ8tK4xeSdElYMxl3mQOkYwyiNl
G+yyXqlFZkpKAESdNScSlBO4PHdnLWTEaLhtTsTfaWvANpDbOp3z5k6aoxwgRWYa
w2B99M5/2Kfx6na4Ial3hHgBC7UE7q0ZA2TOotN8TKkCitGVk+bOpC6ND8o2fZ6a
1V7WNWRGH14kvIHk6eId/avcN1hTfWvFxhFvJsIHwJFLGNM86A2eA8IDg9wkwE8u
SPOHD10kg6Uh2nL1MY1+PmI27ekvJpIRSzaye7JbSMNhAK4uyhcaAA==
-----END RSA PRIVATE KEY-----

Vale lembrar que a chave privada tem que ser bem guardada e não pode ser passada a ninguém. Pois com ela você pode criar novos certificados.

Outro fato a se atentar é em uma possível migração.

Caso no futuro, você mude seu WebServer de máquina, você vai precisar dessa chave privada. Mesmo ela sendo gerada em outro servidor é ela que você vai utilizar para gerar seu certificado. Logo, o certificado ficará amarrado a esta chave, e sem ela você não poderá configurar seu certificado em outra máquina, caso precise.

Página anterior     Próxima página

Páginas do artigo
   1. Conceito geral
   2. Instalando o Open-SSL
   3. Instalando / Recompilando o Apache 2
   4. Gerando uma "Chave Privada"
   5. Gerando uma "Requisição de Certificado"
   6. Configurando o "Certificado Digital" emitido pela CA
   7. Efetuando testes
   8. Criando arquivo de Senha para inicialização do APACHE 2
   9. Mandando o "caminho" de acesso ao certificado via browser
   10. Criando um redirecionamento automático para HTTPS
   11. Criando script para inicialização automática
   12. Conclusão
Outros artigos deste autor

Solução completa para Web Server usando Apache + SSL + MOD_JK + PHP + MySQL

Ferramentas de detecção e NMAP

Introdução ao Personal Firewall (PF)

Instalação do Apache 2 no OpenSuSE 10.2

Integração Apache => Tomcat

Leitura recomendada

Radius - Freeradius com MySQL no Debian

Acesso remoto para principiantes

Configurando uma VPN no FreeBSD

Problema do navegador Opera com temas GTK+2 escuros [Resolvido]

Ferramentas úteis para diagnóstico da rede

  
Comentários
[1] Comentário enviado por brunolimaq em 03/04/2008 - 12:43h

Disponivel para qualquer dúvida.

Att.,

Bruno Lima

[2] Comentário enviado por cvs em 03/04/2008 - 13:00h

Alteração feita de acordo com sua solicitação.

Em tempo gostaria de parabeniza-lo... Leitura interessante. Só acho que seria OpenSSL :D

[3] Comentário enviado por brunolimaq em 03/04/2008 - 13:03h

Entendo, fiquei na dúvida, mas os conceitos sobre certificação falam mais forte.
Poderei fazer algo melhor no futuro, e usar o nome OpenSSL.
Obrigado.


[4] Comentário enviado por julianjedi em 04/04/2008 - 10:55h

Gostei do artigo ... muito esclarecedor... e bem didático .. nota 10 .. e ja ta nos meus favoritos...

[5] Comentário enviado por caiogustavo15 em 04/04/2008 - 20:18h

Muito interessante esse seu artigo. Há algum tempo venho procurando algo assim, mais ainda não tinha achado. Mais como sou "iniciante" ainda tenho algumas dúvidas. No meu caso quero fazer essa implementação pois no prédio onde moro nós dividimos uma rede wirelless, mais as vezes aparece algum conhecido que quer usar a rede e temos que ficar colocando senha, liberando o MAC no ap.. essas coisas, e por isso gostaria de usar esse método para "liberar" o acesso de pessoas na rede. Você teriam mais algum artigo que pudesse me ajudar?? Alguma outra leitura pra me indicar ?? Obrigado!

[6] Comentário enviado por emarone em 04/04/2008 - 22:31h

Cara, parabéns, pelo artigo!!!!

[7] Comentário enviado por jivago em 06/04/2008 - 10:50h

Bruno, essa configuração funciona tambem em Kurumi e Slackware??

[8] Comentário enviado por brunolimaq em 07/04/2008 - 12:32h

Sim, funciona em qualquer distro, incluse em SOLARIS, basta termo o APACHE e o OPENSSL instalados.

Qualquer problema ou dúvida em outra distro, estou a disposição.

Att.,

Bruno Lima

[9] Comentário enviado por otaviozm em 08/04/2008 - 12:29h

parabens pelo artigo! um assunto muito interessante a ser discutido... agradeço pelo tempo dedicado a esclarecer algumas duvidas :)

abraços!

[10] Comentário enviado por leows em 23/12/2008 - 11:03h

Para não pedir senha caso crie um certificado seguro, basta adicionar esse script em /etc/init.d

instale o interpretador expect com o comando:
apt-get install expect

ATENÇÃO: altere o valor <password> do conteúdo do script abaixo para a senha que vc criou na sua phrase do certificado.

# crie um arquivo chamado webserver em /etc/init.d

vi /etc/init.d/webserver

#!/bin/bash
# /etc/init.d/webserver
#
set -e
set -u
test -x /etc/init.d/apache2 || exit 0
. /lib/lsb/init-functions

case "${1:-''}" in
'start')
/usr/bin/expect -c '
set force_conservative 0 ;# set to 1 to force conservative mode even if
if {$force_conservative} {
set send_slow {1 .001}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout 2
puts "\n"
spawn /etc/init.d/apache2 start
expect "phrase:"
send "<password>\r"
expect "OK"
puts "\r"
exit
'
;;

'stop')
/etc/init.d/apache2 stop
;;

'restart')
/etc/init.d/apache2 stop
sleep 5
/etc/init.d/webserver start
;;
'reload')
/etc/init.d/apache2 reload
;;
'force-reload')
/etc/init.d/apache2 force-reload
;;
*)
echo "Usage: $SELF start|stop|restart|reload|force-reload"
exit 1
;;
esac

ATENÇÃO: altere o valor <password> do conteúdo do script acima para a senha que vc criou na sua phrase do certificado.

salve e após dê permissão de escrita
chmod +x /etc/init.d/webserver


verifique qual level o seu linux está iniciando com o comando who -r
após entre no diretório do level correto em
/etc/rc<level>.d

renomeio o link do apache2 para K91apache2
mv /etc/rc<level>.d/S91apache2 ./K91apache2

após coloque o nosso script customizado para iniciar o apache2 sem pedir senha
ln -s /etc/init.d/webserver /etc/rc<level>.d/S92webserver

teste o script
/etc/init.d/webserver stop
/etc/init.d/webserver start

# Boa Sorte! :)

[11] Comentário enviado por thiagoborn em 06/06/2012 - 22:59h

Você saberia como configurar o apache 2.2 para que ele peça o certificado do cliente para fechar conexão?
Client Faz requisição -> Apache
Apache pede certificado de cliente. E por aí vai


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts