Chega de teoria!
Agora que você sabe o que é um certificado e sua relação com criptografia/chaves públicas e privadas, como funcionam e para que servem, está na hora de fazer um com suas próprias mãos.
Aprenda como criar, configurar, fazer o pedido (request) para a CA e revogar certificados em OpenSSL
Lendo o seguinte artigo você irá, facilmente, criar um certificado.Porém, se quiser entender melhor como funciona, recomendo antes você ler o artigo sobrecriptografia assimétrica e importância das chaves, o de chaves públicas e privadas e o que explica ofuncionamento dos certificados digitais.Uma das maneiras de criar certificados é através da ferramenta OpenSSL, no Linux, que é um conjunto de bibliotecas que usa criptografia para gerar os certificados descritos neste artigo.
Vamos usar, configurar e criar certificados X.509.
Entre no site da OpenSSL
www.openssl.orgE baixe a última versão, geralmente é a que está destacada e escrita [LATEST]:
www.openssl.org/source/Você pode ir na pasta que baixou, clicar com o botão direito e extrair.
Ou pelo terminal. Aqui, o comando foi
tar -zxf openssl-1.0.1c.tar.gz
Agora, pelo terminal, entre na pasta através do comando 'cd'
cd openssl-1.0.1c
Vamos dar início a instalação do OpenSSL. Primeiro, configure
./config
Depois, o make, que irá preparar o
sistema e os arquivos para a instalação, algumas coisas aparecerão na tela [veja a magia no ar...as coisas estão se instalando, se configurando, compilando...tudo na sua frente. Nada de clicar em um executável e tudo acontecer sem você ver. Você está vendo como tudo acontece. Não é lindo?]:
make
Com tudo pronto, instale:
make install
Caso tenha problemas de permissão:
sudo make install
Pronto, o OpenSSL está instalado.
Certifique-se indo na pasta /usr/local/ssl/misc
Dê o comando 'ls' e veja os arquivos 'CA.sh', 'CA.pl' e outros, criam os certificados.
Caso queira mais detalhes e opções sobre a instalação, como testes e instalação em diferentes diretórios, consulte o arquivo INSTALL na pasta openssl que você descompactou.
Para efeito de organização, recomendo que crie uma pasta para cada certificado que vá criar:
mkdir cert1
Vamos criar o certificando usando o script CA.sh feito em Shell, lembrando que ele, assim como CA.pl feito em
Perl são apenas ferramentas, os certificados podem ser feitos sem eles, usando as bibliotecas do OpenSSL, mas isso se torna um trabalho muito tedioso.
Para criar, entre na pasta do seu certificado e rode o scrip de lá e preencha o que lhe for solicitado:
cd cert1
sh /usr/local/ssl/misc/CA.sh -newca
De início, vai perguntar pra qual arquivo (filename) você deseja criar o CA, se nenhum, se deseja criar, dê enter e responda as perguntas.
Se desejar automatizar essas opções (Nome da
empresa, grupo, cidade, estado), configure o arquivo openssl.cnf
Note que dentro de sua pasta foi criada uma pasta chamada demoCA, com toda a parafernália de arquivos, certificados e keys.
Essa foi a criação do CA, usando '-newca' como opção no script.
Mas somente criamos o CA. Criar um certificado qualquer um cria, ele precisa mesmo é ter valor.
- CSR: Certificate Signing Request
Vamos agora solicitar o Certificado Digital, ou seja, fazer um request, um pedido.
Vamos fazer isso com a opção '-newreq', que irá criar uma chave pública, e terá
informações sobre nossa empresa. Esse CSR vai assinado com a chave privada, então enviamos tudo isso criptografado para a CA, via chave pública.
Só então é que as autoridades validam nosso certificado.
Na prática, as empresas visitam o cliente para ter certeza das informações que este passou via CSR.
Porém, como vamos criar certificados caseiros, vamos ao OpenSSL:
La na sua pasta:
sudo sh /usr/local/ssl/misc/CA.sh -newreq
Preencha os dados.
Evite sempre usar cedilha, acento e (" ' ! @ # $ % ¨ & * _ - + = § ¬ ¢ £ ³ ² ` ´ [ ] { } ( ) ª º ^ ~ ? / \ ; : . , < > |).
Caso esteja mexendo com Web, sua URL vai em Commom Name.
Você receberá a informação:
'Request is in newreq.pem, private key is in newkey.pem'
Ou seja, seu pedido está em 'newreq.pem' e sua chave privada em 'newkey.pem'.
Faça uma cópia desses arquivos e/ou mude o nome deles para algo melhor, 'projeto1req.pem' e 'projeto1key.pem'
Abra lá seu request, o meu ficou assim:
-----BEGIN CERTIFICATE REQUEST-----
MIIB5jCCAU8CAQAwgY4xCzAJBgNVBAYTAmJyMQswCQYDVQQIDAJjZTEVMBMGA1UE
BwwMY2FuaW5kZXppbmhvMQ4wDAYDVQQKDAVncnBlYzEMMAoGA1UECwwDdWZjMREw
DwYDVQQDDAhwcm9nLmNvbTEqMCgGCSqGSIb3DQEJARYbamFybGlzc29uLm1vcmVp
cmFAZ21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpE3rqkTRp
qv/Vlgmfp6sEBqUrh12gz7lLKCIhrHgK09UwiRC7l3POjD04nuNkBW+FKN94kFVN
T9UrkmTmmt1bvUuGuoUNu2lJOkP0wJnkDy8fgW80xqE6KHEpzIeWTa25QiSvm7xJ
Msz6WTedaevNG2KdCcek3M5PQOCLpb2iRwIDAQABoBcwFQYJKoZIhvcNAQkHMQgM
BjEyMzQ1NjANBgkqhkiG9w0BAQUFAAOBgQCWHoMZE4pFP7Xz1qNBHJs9DLzgq9kd
GLgnvZHm6ZO+mknoSc3+z7o3S453y2cI65ygG/B4K/gMv0FiqSV52g//prb1V5nu
DmkuOfOl5PBujMgTjOe/wz+AmDwyVkiBhyproLLGBX+9SloUsQItR13O72htrTu7
/JTABMGAfHXc6A==
-----END CERTIFICATE REQUEST-----
Todas as informações estão aí. Que maravilha essa criptografia, não?
Geralmente é essa informação que as empresas pedem pra validar seu certificado.
Bom, se for seu caso criar o certificado e fazer o pedido em uma CA 'de verdade', pode parar por aqui e espero ter te ajudado.
- Assinando
Caso queira criar e assinar seus certificados, vamos continuar.
Isso é feito com a opção '-sign' (sabendo inglês, deve notar que é tudo bem auto explicativo).
sudo sh /usr/local/ssl/misc/CA -sign
Vai mostrar as informações do certificado e vai perguntar se vai querer assinar.
Isso é particularmente importante se você estiver numa máquina que é uma espécie de Administrador e precisar certificar o certificado dos outros.
Por exemplo, é você que certifica as máquinas que farão parte do Grid, se estão de acordo com os protocolos etc.
Após a assinatura, o certificado certificado (?) estará em 'newcert.pem', como mostrou a última linha:
Signed certificate is in newcert.pem
Outras informações estão no 'newreq.pem'
Agora vá na demoCA e abra o index.txt, veja que ele tem algumas informações sobre os certificados. Note o 'V', é de válido.
- Revogando
Vamos supor que alguém te hackeou, descobriram sua senha ou tentaram 'logar em você' com um certificado estranho.
O OpenSSl oferece uma ferramenta pra revogar os certificados. Vamos revogar o que criamos, o newcert.pem
sudo openssl ca -revoke newcert.pem
Bote a senha, e estará revogado. Agora veja o que aconteceu com o index.txt
Os arquivos revogados ficam em uma lista, a CRL - Certificate Revolotacion List. Antes de revogar, crie uma:
sudo openssl ca -gencrl cert_rev.pem
Crie a pasta demoCA/crlnumber caso tenha algum erro do tipo 'no such file'
echo 01 > demoCA/crlnumber
Então revogue.
Há muito mais informações sobre essa poderosíssima ferramenta que é esta biblioteca OpenSSL, como a validade dos certificados, como usar com o Windows etc.
Você pode obter mais informações na documentação deles ou no link da primeira fonte.
Fontes:
http://www.ipsec-howto.org/x600.html href="http://www.globus.org/">http://www.globus.org href="http://pt.wikipedia.org/wiki/Certificado_digital">http://pt.wikipedia.org/wiki/Certificado_digital href="http://en.wikipedia.org/wiki/Certificate_signing_request">http://en.wikipedia.org/wiki/Certificate_signing_request