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.
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:
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:
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.
[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!
[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
'
;;
[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