| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2008 15:42:48
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
Pessoal,
Num teste que fiz consigo acessar beleza quando o keystore está em arquivo do tipo JKS, mas quando as informações de chave privada estão num token ? No caso é um token do tipo eCNPJ sendo que a chave privada não pode ser extraida. Como configurar para o servidor "enxergar" minhas credencias.
Agradeço qualquer ajuda.
abracos.
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2008 18:07:02
|
oyama
Virtual Machine Man
Membro desde: 19/04/2005 10:11:09
Mensagens: 572
Offline
|
elissandromendes wrote:Num teste que fiz consigo acessar beleza quando o keystore está em arquivo do tipo JKS, mas quando as informações de chave privada estão num token ?
Opções:
1) Criar/obter um provider JCE para acessar o token.
2) Implementar/obter um protocolo que comunica com este tipo de dispositivo, tipo PKCS#11.
3) Se este dispositivo tiver biblioteca de acesso em código nativo, fazer chamadas via JNI.
O mais fácil é se o fornecedor do token fornecer um provider JCE para acessa-lo.
elissandromendes wrote:No caso é um token do tipo eCNPJ sendo que a chave privada não pode ser extraida.
Você não precisa extrair a chave do token. O token tem que ter a capacidade de criptografar/descriptografar um dado que é passado para ele.
Existem métodos em classes JCE que fazem esta parte. Procure por wrap/unwrap da classe Cipher.
elissandromendes wrote:Como configurar para o servidor "enxergar" minhas credencias.
Não entendi o que você chamou de servidor na frase acima.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2008 18:24:01
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Experimente para ver se os providers da Sun (SunPKCS11, disponível a partir do Java 5.0, e SunMSCAPI, disponível a partir do java 6.0) conseguem efetuar as operações com seu token USB.
Eles dependem de o driver criptográfico estar corretamente instalado na máquina.
A configuração desses providers é feita através do arquivo java.security dentro do diretório jre/lib/security.
Uma vez consegui usar o SunPKCS11 - mas não sei se as operações criptográficas que você precisa são suportadas pelo SunPKCS11.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 01:43:01
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Deixa eu adivinhar, você está tentando implementar um programa para conectar em webservices de secretarias de fazenda para emitir notas fiscais eletrônicas?
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 10:48:48
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
victorwss wrote:Deixa eu adivinhar, você está tentando implementar um programa para conectar em webservices de secretarias de fazenda para emitir notas fiscais eletrônicas?
Sim.
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 11:05:29
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
thingol wrote:Experimente para ver se os providers da Sun (SunPKCS11, disponível a partir do Java 5.0, e SunMSCAPI, disponível a partir do java 6.0) conseguem efetuar as operações com seu token USB. Eles dependem de o driver criptográfico estar corretamente instalado na máquina. A configuração desses providers é feita através do arquivo java.security dentro do diretório jre/lib/security. Uma vez consegui usar o SunPKCS11 - mas não sei se as operações criptográficas que você precisa são suportadas pelo SunPKCS11.
Com o codigo abaixo consigo "enxergar" várias informações do meu token: public class Teste { public static void main( String args[] ) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, UnrecoverableKeyException { Provider p = new sun.security.pkcs11.SunPKCS11("c:/temp/security/security.cfg"); Security.addProvider(p); KeyStore ks = KeyStore.getInstance("PKCS11"); ks.load(null, new String("xxxxxx").toCharArray()); PrivateKey privateKey = (PrivateKey) ks.getKey("ALIAS", new String("xxxxxx").toCharArray()); Certificate certificate = (Certificate) ks.getCertificate("ALIAS"); System.out.println(privateKey.toString()); } } Conteúdo do arquivo de configuração: name=Safenetikey2032 library=c:\windows\system32\dkck201.dll attributes = compatibility *** Essa DLL encontrei citada num exemplo da net e verifiquei que tinha no meu windows. Usei e deu "certo", outra citada para o modelo do token (SafeNet ikey 2032) seria dkck2032.dll mas essa nao tenho e nao encontrei no site do fabricante para download **** Isso me retorna para a chave privada: SunPKCS11-Safenetikey2032 RSA private key, 1024 bits (id 2293760, token object, sensitive, unextractable) O que gostaria de ajuda para entender seria: 1) Se é possível e como utilizar esse token USB para assinar um arquivo XML ? 2) Como configurar no java/netbeans o acesso ao web service via HTTPS usando o certificado contido nesse token ? O WS a ser acessado requer autenticação do cliente, isso já está como uma extensão do certificado do token. Segue um código de teste de assinatura e a exceção levantada: public class XMLSigner { private static final String CANONICALIZE_METHOD = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; private static final String C14N_TRANSFORM_METHOD = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; private static final String PROVIDER_CLASS_NAME = "org.jcp.xml.dsig.internal.dom.XMLDSigRI"; private static final String PROVIDER_NAME = "jsr105Provider"; public static OutputStream sign( File inXML, File ouXML ) { OutputStream os = null; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(false); // Obtem DOM do documento DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(inXML); // Obtem elemento do documento a ser assinado, será criado uma REFERENCE para o mesmo NodeList elements = doc.getElementsByTagName("infNFe"); Element el = (Element) elements.item(0); String id = el.getAttribute("Id"); // Cria uma factory representando o elemento XML Signature, a partir dela serão criados as parte desse elemento String providerName = System.getProperty(PROVIDER_NAME, PROVIDER_CLASS_NAME); XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance()); // Cria método de Digest e canonicalização DigestMethod digestMethod = signatureFactory.newDigestMethod(DigestMethod.SHA1, null); C14NMethodParameterSpec c14NMethodParameterSpec = null; CanonicalizationMethod canonicalMethod = signatureFactory.newCanonicalizationMethod(CANONICALIZE_METHOD, c14NMethodParameterSpec); // Cria classe representando o Hash e algoritmo de criptografia a ser aplicado SignatureMethod sm = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null); // Cria a lista de tranformações a serem aplicadas as referencias a serem assinadas ArrayList transformList = new ArrayList(); TransformParameterSpec tps = null; Transform envelopedTransform = signatureFactory.newTransform(Transform.ENVELOPED, tps); Transform c14NTransform = signatureFactory.newTransform(C14N_TRANSFORM_METHOD, tps); transformList.add(envelopedTransform); transformList.add(c14NTransform); // Cria referencia, parte do XML a ser assinado Reference ref = signatureFactory.newReference("#" + id, digestMethod, transformList, null, null); ArrayList refList = new ArrayList(); refList.add(ref); SignedInfo signedInfo = signatureFactory.newSignedInfo(canonicalMethod, sm, refList); Provider p = new sun.security.pkcs11.SunPKCS11("c:/temp/security/security.cfg"); Security.addProvider(p); KeyStore ks = KeyStore.getInstance("PKCS11"); ks.load(null, new String("inteqq").toCharArray()); PrivateKey privateKey = (PrivateKey) ks.getKey("4e1ece83-89de-4ae8-86f1-9564d7fdf945", new String("inteqq").toCharArray()); Certificate certificate = (Certificate) ks.getCertificate("4e1ece83-89de-4ae8-86f1-9564d7fdf945"); DOMSignContext dsc = new DOMSignContext(privateKey, doc.getDocumentElement()); KeyInfoFactory kif = signatureFactory.getKeyInfoFactory(); X509Data x509Data = kif.newX509Data(Collections.singletonList(certificate)); KeyInfo keyInfo = kif.newKeyInfo(Collections.singletonList(x509Data)); XMLSignature signature = signatureFactory.newXMLSignature(signedInfo, keyInfo); signature. sign(dsc); os = new FileOutputStream(ouXML); TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); trans.transform(new DOMSource(doc), new StreamResult(os)); } catch (TransformerException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (MarshalException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (XMLSignatureException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (UnrecoverableKeyException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (CertificateException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (KeyStoreException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (InvalidAlgorithmParameterException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (InstantiationException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (SAXException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } catch (ParserConfigurationException ex) { Logger.getLogger(XMLSigner.class.getName()).log(Level.SEVERE, null, ex); } return os; } public static void main( String[] args ) { OutputStream out = XMLSigner.sign(new File("c:/temp/entrada/teste-nfe.xml"), new File("c:/temp/entrada/teste-nfe-out.xml")); } } Exceção: 01/02/2008 10:07:01 inteq.nfe.servicos.util.XMLSigner sign SEVERE: null javax.xml.crypto.dsig.XMLSignatureException: javax.xml.crypto.dsig.TransformException: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at org.jcp.xml.dsig.internal.dom.DOMSignedInfo.canonicalize(DOMSignedInfo.java:175) at org.jcp.xml.dsig.internal.dom.DOMRSASignatureMethod.sign(DOMRSASignatureMethod.java:140) at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:367) at inteq.nfe.servicos.util.XMLSigner.sign(XMLSigner.java:128) at inteq.nfe.servicos.util.XMLSigner.main(XMLSigner.java:169) Caused by: javax.xml.crypto.dsig.TransformException: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:231) at org.jcp.xml.dsig.internal.dom.DOMTransform.transform(DOMTransform.java:129) at org.jcp.xml.dsig.internal.dom.DOMCanonicalizationMethod.canonicalize(DOMCanonicalizationMethod.java:67) at org.jcp.xml.dsig.internal.dom.DOMSignedInfo.canonicalize(DOMSignedInfo.java:172) ... 4 more Caused by: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at sun.security.pkcs11.P11Signature.engineUpdate(P11Signature.java:371) at java.security.Signature$Delegate.engineUpdate(Signature.java:1118) at java.security.Signature.update(Signature.java:684) at org.jcp.xml.dsig.internal.SignerOutputStream.write(SignerOutputStream.java:68) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flushBuffer(UnsyncBufferedOutputStream.java:62) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flush(UnsyncBufferedOutputStream.java:78) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.close(UnsyncBufferedOutputStream.java:84) at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalizeSubTree(CanonicalizerBase.java:192) at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalize(CanonicalizerBase.java:138) at com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14N.enginePerformTransform(TransformC14N.java:65) at com.sun.org.apache.xml.internal.security.transforms.Transform.performTransform(Transform.java:350) at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:218) ... 7 more Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate(Native Method) at sun.security.pkcs11.P11Signature.engineUpdate(P11Signature.java:365) ... 18 more javax.xml.crypto.dsig.TransformException: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:231) at org.jcp.xml.dsig.internal.dom.DOMTransform.transform(DOMTransform.java:129) at org.jcp.xml.dsig.internal.dom.DOMCanonicalizationMethod.canonicalize(DOMCanonicalizationMethod.java:67) at org.jcp.xml.dsig.internal.dom.DOMSignedInfo.canonicalize(DOMSignedInfo.java:172) at org.jcp.xml.dsig.internal.dom.DOMRSASignatureMethod.sign(DOMRSASignatureMethod.java:140) at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:367) at inteq.nfe.servicos.util.XMLSigner.sign(XMLSigner.java:128) at inteq.nfe.servicos.util.XMLSigner.main(XMLSigner.java:169) Caused by: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at sun.security.pkcs11.P11Signature.engineUpdate(P11Signature.java:371) at java.security.Signature$Delegate.engineUpdate(Signature.java:1118) at java.security.Signature.update(Signature.java:684) at org.jcp.xml.dsig.internal.SignerOutputStream.write(SignerOutputStream.java:68) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flushBuffer(UnsyncBufferedOutputStream.java:62) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flush(UnsyncBufferedOutputStream.java:78) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.close(UnsyncBufferedOutputStream.java:84) at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalizeSubTree(CanonicalizerBase.java:192) at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalize(CanonicalizerBase.java:138) at com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14N.enginePerformTransform(TransformC14N.java:65) at com.sun.org.apache.xml.internal.security.transforms.Transform.performTransform(Transform.java:350) at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:218) ... 7 more Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate(Native Method) at sun.security.pkcs11.P11Signature.engineUpdate(P11Signature.java:365) ... 18 more java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at sun.security.pkcs11.P11Signature.engineUpdate(P11Signature.java:371) at java.security.Signature$Delegate.engineUpdate(Signature.java:1118) at java.security.Signature.update(Signature.java:684) at org.jcp.xml.dsig.internal.SignerOutputStream.write(SignerOutputStream.java:68) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flushBuffer(UnsyncBufferedOutputStream.java:62) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flush(UnsyncBufferedOutputStream.java:78) at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.close(UnsyncBufferedOutputStream.java:84) at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalizeSubTree(CanonicalizerBase.java:192) at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalize(CanonicalizerBase.java:138) at com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14N.enginePerformTransform(TransformC14N.java:65) at com.sun.org.apache.xml.internal.security.transforms.Transform.performTransform(Transform.java:350) at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:218) at org.jcp.xml.dsig.internal.dom.DOMTransform.transform(DOMTransform.java:129) at org.jcp.xml.dsig.internal.dom.DOMCanonicalizationMethod.canonicalize(DOMCanonicalizationMethod.java:67) at org.jcp.xml.dsig.internal.dom.DOMSignedInfo.canonicalize(DOMSignedInfo.java:172) at org.jcp.xml.dsig.internal.dom.DOMRSASignatureMethod.sign(DOMRSASignatureMethod.java:140) at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:367) at inteq.nfe.servicos.util.XMLSigner.sign(XMLSigner.java:128) at inteq.nfe.servicos.util.XMLSigner.main(XMLSigner.java:169) Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_MECHANISM_INVALID at sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate(Native Method) at sun.security.pkcs11.P11Signature.engineUpdate(P11Signature.java:365) O que siginifica esse CKR_MECHANISM_INVALID ? Desculpem o tamanho da mensagem. Desde java agradeço qualquer ajudar.
This message was edited 1 time. Last update was at 01/02/2008 11:07:40
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 11:16:05
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Isso é um erro definido pelas bibliotecas de PKCS#11 (Mecanismo inválido).
Pode ocorrer quando o algoritmo de assinatura ou de digest, ou de padding da assinatura, não é o aceito pelo dispositivo, mas isso é estranho no seu caso, já que você está solicitando RSA + SHA1, que costuma ser o padrão.
Você tem algum contato com o fabricante (Safenet, que tinha comprado a Rainbow - no meu tempo esse iKey era fabricado pela Rainbow)?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 11:30:44
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
elissandromendes wrote:
Sim
Hahaha, eu sabia!
Eu também estou tendo que enfrentar este dragão que o governo inventou.
Infelizmente quanto a essa parte da chave, eu não posso ajudar muito porque foi um outro cara aqui da equipe que fez essa parte e nesse ponto eu entendo muito pouco.
This message was edited 1 time. Last update was at 01/02/2008 11:34:19
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 12:03:12
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
victorwss wrote:
elissandromendes wrote:
Sim
Hahaha, eu sabia!
Eu também estou tendo que enfrentar este dragão que o governo inventou.
Infelizmente quanto a essa parte da chave, eu não posso ajudar muito porque foi um outro cara aqui da equipe que fez essa parte e nesse ponto eu entendo muito pouco.
Verdade, é um dragão !! rs
Qual o token que vcs utilizaram ?
Teria como ver se no codigo acima estou cometendo algum erro, ou de repente manda um codigo de vcs pra eu verificar contra esse meu token aqui ?
abracos.
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 12:07:13
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
Amigos,
E quanto a acessar o WS via HTTPS usando esse token alguma dica ?
Usando o IE consigo ver blz o WSDL de um dos serviços. Como faco isso no Java e de preferencia no ambiente do Netbeans.
Isso já me adiantaria bastante, pois o token de assinatura do xml será o da empresa que parece será em arquivo, daí esse meu seria apenas para agir como do transmissor.
Agradeco.
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 15:28:17
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Cara, tenta algo mais ou menos assim. Não sei se vai ajudar:
This message was edited 1 time. Last update was at 01/02/2008 15:29:54
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 15:50:23
|
oyama
Virtual Machine Man
Membro desde: 19/04/2005 10:11:09
Mensagens: 572
Offline
|
Bem, como diria o estripador, vamos por parte:
1) Web Services
Procure por um framework que implemente WS-SOAP. Exemplos: Axis, XFire.
2) É necessário certificação do cliente para acessar este Web Service?
Se sim, você vai ter que usar JSSE. De uma procurada por exemplos aqui mesmo no GUJ.
3) É a mesma chave (eCNPJ) que vai assinar a mensagem que vai autenticar para acesso via Web Services?
Se sim, você vai ter que setar assim:
e configurar a parte de certificados em uma outra keystore.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 16:38:57
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
oyama wrote:Bem, como diria o estripador, vamos por parte:
1) Web Services
Procure por um framework que implemente WS-SOAP. Exemplos: Axis, XFire.
Estou usando o JAX-WS do Java 6 para implementar o cliente. Aparentemente está OK, testei acessando um servidor construido com os WSDLs dos servicos da sefaz que consegui baixar, porem sem acessar via HTTPS.
oyama wrote:
2) É necessário certificação do cliente para acessar este Web Service?
Se sim, você vai ter que usar JSSE. De uma procurada por exemplos aqui mesmo no GUJ.
Tranquilo irei dar uma olhada.
oyama wrote:
3) É a mesma chave (eCNPJ) que vai assinar a mensagem que vai autenticar para acesso via Web Services?
Se sim, você vai ter que setar assim:
e configurar a parte de certificados em uma outra keystore.
Quando em produção não serão a mesma. Teremos a nossa, um eCNPJ para acessar o WS e nosso cliente terá a de assinatura ou essa de assinatura do cliente servirá tambem para acessar o WS.
Um pergunta quanto a configuração que vc citou, tenho como exportar o certificado do token e converte-lo de forma a importa-lo num arquivo JKS e assim informar esse JKS como sendo o meu keystore donde o SSL buscara a autenticacao.
Vi alguma coisa na net vou dar uma olhada, se já tiver algo por ai agradeco.
abracos.
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2008 17:00:11
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Aparentemente está OK, testei acessando um servidor construido com os WSDLs dos servicos da sefaz que consegui baixar, porem sem acessar via HTTPS.
Olha, vou te dar essa dica: Não confie no WSDL porque algumas UFs não o geram corretamente (e o azar por isso é do contribuinte). Analise-o já pensando em que tipo de atitude tomar para remendar quaisquer inconsistências que tiver.
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2008 22:20:15
|
elissandromendes
HelloWorld
Membro desde: 06/03/2007 19:30:42
Mensagens: 13
Localização: Fortaleza
Offline
|
Bom galera,
Estou aguardando resposta do pessoal sa SafeNet BR pra saber o que seria esse problema de INVALID MECHANISM.
Acredito que o código que estou usando está ok! Dever ser algum pro de configuração, onde devo estar deixando ligado alguns dos mecanismos que são citados na documentação só que não é o correto pra esse meu modelo.
Assim que tiver uma resposta positiva posto aqui.
De agora, muito massa ajuda de vcs.
Obrigado mesmo !!
abraços.
|
Elissandro A. Mendes
Desenvolvedor INTEQ Systems
Fortaleza-Ceará |
|
|
 |
|
|