OpenOces  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
rtsugumi
Thread.start()

Membro desde: 09/06/2006 20:03:03
Mensagens: 33
Offline

Pessoal é a primeira vez que eu estou trabalhando com certificação digital, nós estamos usando o openoces, já consegui gerar o certificado, eu queria saber se alguém sabe qual a classe que eu uso para extrair as informações do certificado??
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Procure pela documentação de java.security.cert.X509Certificate (método org.openoces.ooapi.cert.OcesCertificate.getEncapsulatedCertificate
[WWW]
rtsugumi
Thread.start()

Membro desde: 09/06/2006 20:03:03
Mensagens: 33
Offline

vlw thingol, mas eu não consegui fazer funcionar ainda, eu coloco um etoken ai eu faço o login e gera um xml com os dados o certificado depois eu chamo esse código

e dá o seguinte erro


thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Uma coisa que é absolutamente indispensável para quem está usando certificação digital é saber usar as seguintes ferramentas (que são em C mas devem ter versões compiladas para Linux e Windows, é só procurar):

dumpasn1 - ele permite ver se um arquivo está em formato DER e que dados ele tem;
openssl - por exemplo, openssl x509 -in arquivo.cer -certs permite listar os certificados contidos em um arquivo "arquivo.cer".


Dá a impressão que você passou os dados errados para generateCertificate, que requer um array de bytes em formato DER.

Leia o livro "Beginning Cryptography in Java", de David Hook, que explica como usar o BouncyCastle (biblioteca usada pelo OpenOCES) e os conceitos de criptografia que você precisa saber.
[WWW]
rtsugumi
Thread.start()

Membro desde: 09/06/2006 20:03:03
Mensagens: 33
Offline

vlw thingol, eu consegui pegar as informações do certificado.
Agora eu preciso validar a cadeia de confiança do certificado, ai surgiu um dúvida eu preciso pegar os outros certificados da cadeia e trabalhar com a KeyStore??? é isso??

thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Procure por CertPath, CertPathBuilder, TrustAnchor, CertPathValidator ( http://java.sun.com/javase/6/docs/api/java/security/cert/package-summary.html )
[WWW]
rtsugumi
Thread.start()

Membro desde: 09/06/2006 20:03:03
Mensagens: 33
Offline

thingol wrote:Procure por CertPath, CertPathBuilder, TrustAnchor, CertPathValidator ( http://java.sun.com/javase/6/docs/api/java/security/cert/package-summary.html )


Vlw thingol, vou me dar uma pesquisada nessas classes.
rtsugumi
Thread.start()

Membro desde: 09/06/2006 20:03:03
Mensagens: 33
Offline

Blz eu consegui montar a cadeia de certificado, agora tem um monte de validações que eu preciso fazer mas o que eu to em dúvida são as seguinte:

  • Validar o uso da chave utilizada (Assinatura Digital) de tal forma a aceitar
    certificados somente do tipo A (não serão aceitos certificados do tipo S); (Existe alguma propriedade no certificado que informa se ele é do tipo a ou s ??)


  • Garantir que o certificado utilizado é de um usuário final e não de uma Autoridade
    Certificadora; (É só verificar se no certificado contém um cnpj ou cpf, ou existe alguma verificação mais técnica??)
  • thingol
    Moderador

    Membro desde: 29/07/2004 16:10:13
    Mensagens: 17543
    Offline

    Não sei como diferenciar certificados "A" e "S" só olhando em um X.509. Que eu saiba, "A" e "S" dizem se a chave privada está em disquete/hd/USB ou então em um smartcard.

    Para o ICP-Brasil (Autoridade Certificadora Raiz Brasileira), o campo "Basic Constraints" indica que CA=TRUE; as autoridades certificadoras intermediárias (exemplo: ICP-Caixa, veja o certificado de https://internetcaixa.caixa.gov.br ) o campo BASIC CONSTRAINTS indica que CA=FALSE; e em um certificado de usuário esse campo também está preenchido com CA=FALSE. Veja se há mais algum campo no certificado ICP-Caixa (por exemplo) que possa ajudar a fazer tal distinção.
    [WWW]
    rtsugumi
    Thread.start()

    Membro desde: 09/06/2006 20:03:03
    Mensagens: 33
    Offline

    thingol wrote:Não sei como diferenciar certificados "A" e "S" só olhando em um X.509. Que eu saiba, "A" e "S" dizem se a chave privada está em disquete/hd/USB ou então em um smartcard.

    Para o ICP-Brasil (Autoridade Certificadora Raiz Brasileira), o campo "Basic Constraints" indica que CA=TRUE; as autoridades certificadoras intermediárias (exemplo: ICP-Caixa, veja o certificado de https://internetcaixa.caixa.gov.br ) o campo BASIC CONSTRAINTS indica que CA=FALSE; e em um certificado de usuário esse campo também está preenchido com CA=FALSE. Veja se há mais algum campo no certificado ICP-Caixa (por exemplo) que possa ajudar a fazer tal distinção.


    Vlw denovo thingol, sobre o certificado ser "A" ou "S" eu também não entendi direito eu copiei e colei as regras do manual da NF-E
    rtsugumi
    Thread.start()

    Membro desde: 09/06/2006 20:03:03
    Mensagens: 33
    Offline

    Eu postei em um forum de criptografia e eles me responderam a dúvida se o certificado é do tipo "A" ou "S".
    O que muda no certificiado é a extensão keyUsage, se o bit digitalSignature tiver setado o certificado é do tipo "A", se o bit keyEncipherment/dataEncipherment tiver setado o certificado é do tipo "S"

    Eu não vou colocar o link do forum pq eu não sei se é permitido.

    This message was edited 1 time. Last update was at 15/01/2009 06:43:53

    trgpwild
    Debugger

    Membro desde: 12/06/2007 10:10:29
    Mensagens: 62
    Offline

    rtsugumi como vc conseguiu resolver a exception?
    rtsugumi
    Thread.start()

    Membro desde: 09/06/2006 20:03:03
    Mensagens: 33
    Offline

    trgpwild wrote:rtsugumi como vc conseguiu resolver a exception?


    Consegui sim o problema era que eu estava tentando gerar o certificado com o xml inteiro, o correto é pegar somente a propriedade que representa o certificado.
    trgpwild
    Debugger

    Membro desde: 12/06/2007 10:10:29
    Mensagens: 62
    Offline

    Se você puder, por favor posta o pedaço do código que vc usou para capturar o X509Certificate, Abraço...
    rtsugumi
    Thread.start()

    Membro desde: 09/06/2006 20:03:03
    Mensagens: 33
    Offline

    trgpwild wrote:Se você puder, por favor posta o pedaço do código que vc usou para capturar o X509Certificate, Abraço...


     
    Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team