Checar certificação digital!

Olá, bom dia!
Eu recebi uma chave já certificada da empresa que estou prestando serviço, eles me enviaram um e-mail com o certificado digital me pedindo para checar se ele é válido… é um arquivo com extensão .p12 e eu simplesmente não sei, nem achei como usar.

usei algumas linhas de comando que encontrei em alguns tutoriais que lí, mas tbm não funfô:

Tenho um applet e quero usar essa chave “já certificada” para certificar meu .jar, como eu devo proceder para certificar meu applet? e como eu terei certeza que a chave que me enviaram já “certificada” está realmente certificada? acredito que se eu conseguir certificar meu applet aparece alguma mensagem informando o tempo que a chave vai expirar, etc… certo?

Procurei ontem a tarde toda mas não achei nada que me pudesse ajudar, espero que alguém aqui me dê uma luz.

Muito obrigado

Eles lhe mandaram a senha desse certificado .p12?

Você pode listar os certificados contidos nele usando o keytool.

keytool -v -list -storetype pkcs12 -keystore nome__do__seu__arquivo__p12

(é preciso usar o keytool do JDK 1.5.0 ou superior.)

Entre com a senha, e ele deve listar algo como:


Keystore type: pkcs12
Keystore provider: SunJSSE

Your keystore contains 1 entry

Alias name: suaempresa
Creation date: 04/12/2007
Entry type: keyEntry
Certificate chain length: 3
Certificate[1]:
Owner: CN=SuaEmpresa Informatica S/C Ltda, OU=Depto.Contabil, OU=Digital ID Clas
s 3 - Java Object Signing, O=SuaEmpresa Informatica S/C Ltda, L=Sao Paulo, ST=Sao Pau
lo, C=BR
Issuer: CN=VeriSign Class 3 Code Signing 2004 CA, OU=Terms of use at https://www
.verisign.com/rpa (c)04, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Serial number: 1234567842dd9bab6a973628cae4afb8
Valid from: Thu Oct 25 22:00:00 BRST 2009 until: Thu Oct 30 21:59:59 BRST 2012
Certificate fingerprints:
         MD5:  11:22:33:44:CC:C5:99:95:49:70:9E:84:A5:2B:38:DC
         SHA1: 55:66:77:88:EA:E2:5A:E3:A3:E0:F5:7B:A6:E1:6A:AC:FA:C6:94:5E
Certificate[2]:
Owner: CN=VeriSign Class 3 Code Signing 2004 CA, OU=Terms of use at https://www.
verisign.com/rpa (c)04, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Issuer: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C
=US
Serial number: 4191a15a3978dfcf496566381d4c75c2
Valid from: Thu Jul 15 21:00:00 BRT 2004 until: Tue Jul 15 20:59:59 BRT 2014
Certificate fingerprints:
         MD5:  63:FE:60:C5:5A:44:AF:8E:E2:11:5A:27:62:2A:B0:7C
         SHA1: 19:7A:4A:EB:DB:25:F0:17:00:79:BB:8C:73:CB:2D:65:5E:00:18:A4
Certificate[3]:
Owner: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=
US
Issuer: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C
=US
Serial number: 70bae41d10d92934b638ca7b03ccbabf
Valid from: Sun Jan 28 22:00:00 BRST 1996 until: Tue Aug 01 20:59:59 BRT 2028
Certificate fingerprints:
         MD5:  10:FC:63:5D:F6:26:3E:0D:F3:25:BE:5F:79:CD:67:67
         SHA1: 74:2C:31:92:E6:07:E4:24:EB:45:49:54:2B:E1:BB:C5:3E:61:74:E2


*******************************************
*******************************************

Para assinar a applet, use algo como:

jarsigner -keystore nome__do__seu__p12 -storetype pkcs12 nome__do__seu__jar alias

onde alias é esse nome “Alias Name” que aparece na listagem de “keytool” (veja o post acima, onde alias é “suaempresa”).

Cara, perfeito, deu certinho…

Muito obrigado!

Olá,
depois de passar uns dias sem mexer muito no applet assinado que o Thingol me ensinou a fazer como citado acima, eu reparei uma mensagem muito estranha na janelinha que mostra o certificado ela diz:

“The applicantion´s digital signature cannot be verified”

e lá embaixo dessa janelinha abaixo do run ( ao lado do more information) aparece:

" The digital signature cannot be verified by a trust source. Only continue if you trust the origin of the application"

por favor entre nesse end. que tem um screen shoot da janela que descrevi :

http://www.solsoft.com.br/Formax/imgapplet.jpg

Existe alguma maneira de eu verificar e ter certeza que o certificado está válido? nas informações do certificado que aparece quando dou o seguinte comando no console : keytool -v -list -storetype pkcs12 -keystore nome__do__seu__arquivo__p12
diz que é válido até setembro ainda. Agora não sei como proceder, um só certificado pode certificar vários applets? (eu não sei se ele jah está certificando algum, preciso dessa informação?). Eu preciso que essa janela apareça de forma diferente, preciso que ela diga ao usuário que o applet é certificado e confiável.

Obrigado!

Tem um link “More information…” Dá para você imprimir a tela que aparece quando você clica nesse link?

Opa, claro que dá Thingol, o end. do more information é:

http://www.solsoft.com.br/Formax/more_info

A dúvida é, será que o applet foi assinado da maneira correta? ( segui os passos que você me disse corretamente). Pelas mensagens parece que o cert. não está vencido apenas foi emitido por uma empresa não confiável.

Muito obrigado

Desculpe, é o “More Details”. Eu confundi as coisas.

Não dah nada não… a tela que me pediu está em: http://www.solsoft.com.br/Formax/more_details.jpg

Mas não tinha more details, e coloquei o certificate details, acho que você está se referindo a esse não?

Obrigado!

O campo interessante é o “validity”. Ele vai de agosto de 2007 a agosto de 2008?

É isso mesmo Thingol, lá aparece que ainda não venceu, só em Setembro, eu dei um screen shot diferente lá, agora aparece o campo validity por completo. dah uma olhada http://www.solsoft.com.br/Formax/more_details.jpg

Thingol, quando aparece essa tela já quer dizer que automaticamente meu applet está assinado certinho não é?

Sabe me dizer se existe mais coisa pra verificar ou só pode ser problema no certificado ( o arquivo .p12 )?

Antes me enviaram um arquivo .spc e um .pvk, mas depois me disseram que ele estava errado, e converteram pra .p12 e me enviaram, qual a diferença?

.spc e .pvk são usados para assinar arquivos usando-se a ferramenta signcode da Microsoft.
Não sei se o certificador (Verisign Class 3 Code Signing 2004) está na lista de certificadoras autorizadas no cacerts da sua máquina. Só listando (por exemplo:)


C:\Program Files\Java\jre1.6.0_05\lib\security>..\..\bin\keytool -list -keystore
 cacerts -storepass changeit | more

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 51 entries

aolrootca1, 17/01/2008, trustedCertEntry,
Certificate fingerprint (MD5): 14:F1:08:AD:9D:FA:64:E2:89:E7:1C:CF:A8:AD:7D:5E
entrustclientca, 09/01/2003, trustedCertEntry,
Certificate fingerprint (MD5): 0C:41:2F:13:5B:A0:54:F5:96:66:2D:7E:CD:0E:03:F4
verisignclass3g2ca, 25/03/2004, trustedCertEntry,
Certificate fingerprint (MD5): A2:33:9B:4C:74:78:73:D4:6C:E7:C1:F3:8D:CB:5C:E9
thawtepersonalbasicca, 12/02/1999, trustedCertEntry,
Certificate fingerprint (MD5): E6:0B:D2:C9:CA:2D:88:DB:1A:71:0E:4B:78:EB:02:41
globalsignca, 01/08/2007, trustedCertEntry,
Certificate fingerprint (MD5): AB:BF:EA:E3:6B:29:A6:CC:A6:78:35:99:EF:AD:2B:80
digicertassuredidrootca, 07/01/2008, trustedCertEntry,
Certificate fingerprint (MD5): 87:CE:0B:7B:2A:0E:49:00:E1:58:71:9B:37:A8:93:72
... etc ...

Veja se existe o "Verisign Class 3 Code Signing 2004" (isso deve ser visto listando-se um certificado pelo alias - nessa lista que lhe passei aparecem só os "alias") e listando os detalhes de um certificado apenas.

Olá Thingol, Bom dia… bem…
Eu fiz o que vc pediu, listei as certificadores e o (Verisign Class 3 Code Signing 2004) parece não estar na lista de certificadoras autorizadas no cacerts de minha máquina, eu dei o comando que você colocou acima, e apareceu uma lista enorme, mas (Verisign Class 3 Code Signing 2004) não apareceu na lista, e era era grande heim rs

O mais próximo que apareceu do que vc me disse foi seguinte linha:

verisignclass3ca, 27/10/2003, trustedCertEntry,
verisignclass1ca, 25/03/2004, trustedCertEntry,
verisignclass3g3ca, 25/03/2004, trustedCertEntry, SERÁ QUE É ISSO??

Ai o resto tinha muito “Certificate fingerprint” , “comodoaaaca” , “utnuserfirstobjectca” com seus respectivos números.

Se a linha verisignclass3ca, 27/10/2003, trustedCertEntry, for a linha que estamos procurando, o que isso quer dizer? que meu certificado está ok e que o problema foi na assinatura?

E se essa linha não for a que você me disse significa que o certificado não é válido?

Muito obrigado novamente.

Pelo o que eu entendi lendo o tópico é que esta sua chave/certificado foi gerado para assinar código Microsoft. Acho que certificado para código Microsoft é diferente do que para código Java. Até daria para usar, mas teria que importar o “certificate chain” do “certificado root” deste certificado no cacerts. Quando tivemos que assinar código Java, tivemos que comprar um certificado específico para isto.

Aqui na nossa empresa temos sempre de comprar 2 certificados - um que tem o spc e o pvk (específico para código Microsoft) e outro que é usando keystore (específico para código Java).
Pelo que estou achando, o pessoal simplesmente converteu o spc + pvk para o formato pfx (PKCS#12) usando uma ferramenta da Microsoft chamada “pvk2pfx” (que vem no Windows Device Toolkit, que é meio difícil de obter, já que é para desenvolver device drivers) ou outra, que já usei, chamada PVK Digital Certificate Files Importer. Mas isso não é suficiente para transferir o certificado de uma autoridade certificadora para a outra.
Havia um tempo em que a gente comprava um terceiro certificado (para assinar plugins Netscape) mas como ele deixou de ser utilizado faz tempo, deixamos de comprá-lo.
Não sei se outras autoridades certificadoras vendem um certificado só - eu sei que a Verisign (que é representada aqui no Brasil pela sua subsidiária Certisign) vende vários tipos de certificados, provavelmente só para ganhar dinheiro mesmo.

Por curiosidade fui verificar no site da Thawte que tipos de certificados existem para assinar código.Achei isto:
https://www.thawte.com/ssl-digital-certificates/code-signing/codesign_technical.html

Tem um chamado “everything”. Não sei se atende assinar código MS e Java.

Não sei se o mecanismo de verificação de assinatura da JVM verifica algum dado do certificado ou somente se foi assinado por um certificado root “trust”.

Na minha empresa já compramos um certificado da Thawte para assinar código Java. Não temos experiência em assinatura de código MS.

hummm tá… então existe essa diferença de certificados… pra código java, microsoft, enfim… não sabia disso, achei que certificado fosse apenas um. Mas no meu caso, meu código é Java.

alguém conhece algum site que explique detalhadamente todo esse lance de certificados? não encontrei muito sobre o assunto, se não é por vocês aqui fico sem saber.
Vou olhar o link acima.
Muito obrigado novamente pela ajuda.

Pessoal, tenho o seguinte certificado:

ambienteuat.com.br.crt

Este certificado é o que é usado no SSL no nosso servidor.

Como faço pra assinar minha applet a partir desse certificado ?

Obrigado.

Um certificado de servidor não pode ser usado para assinar uma applet.
Não me pergunte por que é assim: é basicamente por motivos comerciais, não matemáticos.
Você tem de pagar algum dinheiro à Verisign ou à Thawte (filial da Verisign na África do Sul) ou à Certisign (filial da Verisign no Brasil).