terça-feira, 14 de julho de 2009

Instalando um certificado SSL

As vezes, procuramos por coisas simples, executamos, testamos, produzimos e, "largamos" o recém-adquirido conhecimento em algum canto obscuro de nossa mente, que pelo pouco uso, é abandonado de vez pelo cérebro... e aqui estava eu a procurar novamente como importar um Certificado, colocar uma keypass (password) para abrir, fazer o handshaking e estabelecer a confiança entre as partes; bom, agora postei aqui pro meu consumo e de outros que tenham a mesma necessidade. Primeiro, alguém fornece um P7B, de onde você teria que extrair os *.cer, ou simplesmente já recebemos o certificado, ou ainda baixamos diretamente, clicando no tal cadeado que aparece nos navegadores, quando acessamos uma URI via HTTPS. Você também pode adquirir um Certificado SSL de uma certificadora como Verisign ou Thawte ou ACRB, Serasa, etc. Essas empresas oferecem excelentes documentações e instruções sobre como instalar o certificado em seu website... mas, as vezes acontece algo diferente, e nesse quesito, taí uma coisa chata pra se lidar: JCE.

Podemos ter uma importação pura e simples de um certificado, onde somente a chave pública é enviada ao servidor; no exemplo abaixo, procedimento para a importação de um certificado emitido pelo SERASA:
keytool -import -alias serasa -file serasa.cer

Será requisitado que você entre com uma password... essa password será a chave privada da keystore; ele só servirá para abrir o certificado do SERASA, onde contém a chave pública.

Enter keystore password:
Re-enter new password:

Quando aparecer "Trust this certificate? [no]:", escreva yes; após a password e o yes, ele mostrará qual chain root foi importada...

Owner: CN=Autoridade Certificadora Raiz Brasileira, ST=DF, L=Brasilia, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR
Issuer: CN=Autoridade Certificadora Raiz Brasileira, ST=DF, L=Brasilia, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR
Serial number: 4
Valid from: Fri Nov 30 10:58:00 BRST 2001 until: Wed Nov 30 21:59:00 BRST 2011
Certificate fingerprints:
MD5: 96:89:7D:61:D1:55:2B:27:E2:5A:39:B4:2A:6C:44:6F
SHA1: 8E:FD:CA:BC:93:E6:1E:92:5D:4D:1D:ED:18:1A:43:20:A4:67:A1:39
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
Key_CertSign
Crl_Sign
#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
#3: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 8A FA F1 57 84 11 13 35 90 42 FA 57 49 54 69 0D ...W...5.B.WITi.
0010: A4 C4 F0 37 ...7
#4: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
[DistributionPoint:
[URIName: http://acraiz.icpbrasil.gov.br/LCRacraiz.crl]
#5: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
[CertificatePolicyId: [2.16.76.1.1.0]
[PolicyQualifierInfo: [
qualifierID: 1.3.6.1.5.5.7.2.1
qualifier: 0000: 16 2C 68 74 74 70 3A 2F 2F 61 63 72 61 69 7A 2E .,http://acraiz.
0010: 69 63 70 62 72 61 73 69 6C 2E 67 6F 76 2E 62 72 icpbrasil.gov.br
0020: 2F 44 50 43 61 63 72 61 69 7A 2E 70 64 66 /DPCacraiz.pdf
]] ]

Trust this certificate? [no]: yes
Certificate was added to keystore

Para listar a chave importada...

keytool -list

Será requisitada a password e posterior listagem... neste ponto, a keystore se encontra em $HOME/.keystore

Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
serasa, 18/02/2008, trustedCertEntry,
Certificate fingerprint (MD5): 96:89:7D:61:D1:55:2B:27:E2:5A:39:B4:2A:6C:44:6F

Melhor renomear o arquivo .keystore para um nome que se entenda... como:

mv ../../.keystore serasa.jks

Usaremos então como keystore, serasa.jks

Dica: No Windows a keystore fica armazena no userdir, e.g., C:\Documents and Settings\ccsilva.

Mais tem um detalhe...

Obviamente você já deve ter percebido que precisará da senha da keystore, criptografada, para depois abrir o certificado e retirar a assinatura; ela não pode aparecer em plain-text e normalmente vai numa tag de properties, como abaixo:

user.jks=gHUrtR3FCQbigUmFOY/eXKxOtcajYEhp+g==RO6SyDLaAQ==

Então, se procurar no Google, vai ser uma tristeza, pois se deparará com um monte de códigos, e outras tantas coisas "jogado ao céu" e, tudo fica complicado... e era para criptografar uma senha somente, não se preocupe, você somente vai precisar de um pequeno aplicativo, disponível aqui (cortesia do Marcelo Torres). Depois descompacte e execute:

$ java -jar criptografia.jar

Agora use copy/paste e faça bom uso da senha criptografada...
Obviamente, quem leu até aqui, irá perceber que precisa de algum
conhecimento adquirido, para enfim, fazer bom uso do post, práticoe sintético.

Nenhum comentário: