| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 12:49:57
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
Boa tarde,
Buscando algumas informações do Certificado Digital, para além da verificação da assinatura fazer outras validações necessarias
ao sistema que trabalho (ex: verificar se o certificado pertence ao usuario logado no sistema), nao encontrei na classe Certificate
nada do tipo.
No toString() do objeto Certificate achei tais informações.
Logico, usar substring nisso é bem tosco entao gostaria de saber se alguem ai conhece o objeto certo pra obter essas informações do Certificado.
Abraços
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 13:09:31
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
O certificado (java.security.cert.Certificate) normalmente é um java.security.cert.X509Certificate; veja os diferentes métodos desse X509Certificate.
Entretanto, certas coisas, como as extensões (como as que são necessárias para você verificar em certificados emitidos dentro do ICP-Brasil), são mais difíceis de destrinchar, e talvez você precise pegar o certificado bruto (obtido pelo método getEncoded de java.security.cert.Certificate) e abra o ASN.1 usando alguma API do BouncyCastle.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2009 13:53:38
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
Vlw thingol. Tenho o bouncyCastle no projeto aqui.
Abraços
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2009 14:12:00
|
_rapha_
Debugger
Membro desde: 08/12/2006 16:10:50
Mensagens: 52
Offline
|
Galera,
Aproveitando este tópico, podem me dar um help de como usar o pacote bouncyCastle para certificado digital? Preciso realizar a critptografia (chave pública) de uma mensagem de um chat e descriptografia (chave privada) desta mesma informação.
Grato.
Raphael
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/06/2009 07:40:15
|
philler
JavaTeenager
![[Avatar]](/images/avatar/3cbab37acac4fc1e6b3f78778d48c67d.jpg)
Membro desde: 26/11/2007 18:34:06
Mensagens: 188
Offline
|
thingol wrote:
Entretanto, certas coisas, como as extensões (como as que são necessárias para você verificar em certificados emitidos dentro do ICP-Brasil), são mais difíceis de destrinchar, e talvez você precise pegar o certificado bruto (obtido pelo método getEncoded de java.security.cert.Certificate) e abra o ASN.1 usando alguma API do BouncyCastle.
Thingol, as informacoes que vc consegue extrair do certificado padrao ICP-Brasil, incluem o CNPJ/CPF, mesmo que esta informacao nao esteja presente no CN do subject, ex.: CN=MEU CLIENTE LTDA, OU=(EM BRANCO), OU=ICP-BRASIL......
Pela informacao do suporte da Certisign, para certificados com uso definido na NFe, a CA nao precisa incluir o CNPJ no nome, o que acontece obrigatoriamente em um e-CNPJ (CN=MEU CLIENTE LTDA:01001001000100, ...).
Poderia detalhar mais esta solucao?
Grato
Alencar
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/06/2009 08:25:09
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
O local correto onde deve ser encontrado o CNPJ é na extensão SubjectAlternativeName, que deve conter um campo otherName, cujo OID é 2.16.76.1.3.3; não no CN. Para mais detalhes, olhe o seguinte documento:
http://www.iti.gov.br/twiki/pub/Certificacao/Resolucoes/RESOLU__O_41_DE_18_04_2006.PDF
(Concordo que essa documentação é difícil de entender, mas é por isso que muita gente cobra uma nota preta para ter conformidade com a ICP-Brasil.)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/06/2009 08:41:49
|
philler
JavaTeenager
![[Avatar]](/images/avatar/3cbab37acac4fc1e6b3f78778d48c67d.jpg)
Membro desde: 26/11/2007 18:34:06
Mensagens: 188
Offline
|
thingol wrote:O local correto onde deve ser encontrado o CNPJ é na extensão SubjectAlternativeName, que deve conter um campo otherName, cujo OID é 2.16.76.1.3.3; não no CN. Para mais detalhes, olhe o seguinte documento:
http://www.iti.gov.br/twiki/pub/Certificacao/Resolucoes/RESOLU__O_41_DE_18_04_2006.PDF
(Concordo que essa documentação é difícil de entender, mas é por isso que muita gente cobra uma nota preta para ter conformidade com a ICP-Brasil.)
Li em um post seu de 2006 (http://www.guj.com.br/posts/list/41287.java) sobre este acesso.
Na versao 1.6 do java ja deve existir classes de acesso a campos ASN.1, nao?
Poderia nos dar alguma dica?
Grato pela atencao
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/06/2009 08:46:37
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
philler wrote:
Na versao 1.6 do java ja deve existir classes de acesso a campos ASN.1, nao?
As classes de acesso a ASN.1 não fazem parte da API oficial (java.security.* ou javax.security.* ); se quiser deixar seu programa dependente da JVM da Sun (o que pode ser um péssimo negócio se você tiver de implantar seu programa em um IBM WebSphere), há algumas classes com.sun.* que fazem isso. Na JVM da IBM há outras classes com.ibm.* que também fazem isso, mas de forma diferente.
Eu prefiro usar o BouncyCastle ( http://www.bouncycastle.org ) para evitar esses problemas de deployment; para quem me perguntou como obter os campos OtherName, veja o pedaço de código que postei em ( http://www.guj.com.br/posts/list/41287.java ) .
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/06/2009 09:30:50
|
philler
JavaTeenager
![[Avatar]](/images/avatar/3cbab37acac4fc1e6b3f78778d48c67d.jpg)
Membro desde: 26/11/2007 18:34:06
Mensagens: 188
Offline
|
Feito amigo. consegui capturar o CNPJ testando se OID = "2.16.76.1.3.3" (teste if (otherName.first.toString.equals...)
Obrigado pela atencao dispensada.
Alencar
|
|
|
 |
|
|