Pular para o conteúdo

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.
Bruno Lima Queiroz brunolimaq
Hits: 166.122 Categoria: Linux Subcategoria: Internet
  • Indicar
  • Impressora
  • Denunciar

Conceito geral

Primeiro vamos definir o que é um Certificado Digital, a definição correta você irá achar em vários dicionários e em diversos sites por aí.

Quero passar aqui o que realmente interessa, que é o significado na prática. Certificado digital é uma forma de garantir que quando estamos acessando um site, ele realmente é o site que queremos acessar, parece meio [*****], mas vamos exemplificar.

Quando você entra no site do Banco do Brasil, você espera que esteja realmente no site do Banco do Brasil, porém, você pode está em um "bote" ou uma "armadilha", que pode ser uma cópia praticamente idêntica do site, o que lhe induz a usar dados pessoais que serão capturados por hackers.

Resumindo, não só quando acessamos bancos, mas qualquer tipo de site com algum tipo de informação ou serviço que estamos interessados, precisamos saber da legitimidade das informações ali apresentadas, e para isso, usamos a certificação digital, que irá nos garantir que o site que estamos acessando é realmente legítimo e autorizado por uma entidade conhecida e autorizada pelo governo, chamada de AC(Autoridade Certificadora), conhecida também por CA(sigla em inglês).

Uma CA pode ser também privada, ou seja, para uso em pequenas empresas e ou redes que querem certificar algum conteúdo interno, mas não são registradas pela ICP-BRASIL(responsável pelos registros no Brasil). Isso é muito comum, pois para usarmos uma CA autorizada pela ICP-Brasil, exemplo, SERPRO, precisamos pagar uma taxa de registro, o que é usual para empresas médias e grandes.

Agora que começamos a entender o que significa um Certificado Digital, vamos implementar um, de uma forma bem prática e usual, considerando que iremos registrar no site e ele terá um Certificado Digital emitido pelo SERPRO(ou qualquer outra empresa autorizada pela ICP-Brasil).

   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

Integração Apache => Tomcat

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

Introdução ao Personal Firewall (PF)

Ferramentas de detecção e NMAP

Instalação do Apache 2 no OpenSuSE 10.2

SOCKS - Acessando Hosts remotos via OpenSSH

Monitoramento de MSN com imsniff

Como utilizar o Aircrack-ng

Gravando mp3 usando o XMMS

Como configurar uma rádio virtual no Linux (Fedora Core 4)

#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

Entre na sua conta para comentar.