Problemas a troca de mensagem com o WEBSERVICE do CTE da Receita Federal

3 respostas
B

Estou com problemas com a comunicação com a Receita.. e preciso de ajuda urgente
tudo o que eu fiz até agora foi baseando-me no GUJ, e consegui avançar muito
a geração e assinatura digital do xml CTE eu já consigo fazer
mas estou com grandes problemas aqui na conversa com o WEBSERVICE

(o tipo de certificando que eu estou lidando é A3)
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Provider p = new sun.security.pkcs11.SunPKCS11(parametros.getProperty("cte.certificado.tokencfg"));

                Security.addProvider(p);
                System.out.println(p.getName());

                KeyStore ks = KeyStore.getInstance("PKCS11");
                ks.load(null, parametros.getProperty("cte.certificado.pass").toCharArray());
                System.out.println(ks.getType()+" "+parametros.getProperty("cte.certificado.pass"));
                System.setProperty("javax.net.ssl.keyStoreType", parametros.getProperty("cte.certificado.tipo"));
                System.setProperty("javax.net.ssl.keyStore", "NONE");
                System.setProperty("javax.net.ssl.keyStoreProvider", ks.getType());//"SunPKCS11-eToken");//  (SmartCard, Safesig,
                System.setProperty("javax.net.ssl.keyStorePassword", parametros.getProperty("cte.certificado.pass"));

            System.setProperty("javax.net.ssl.trustStoreType", "JKS");
            System.setProperty("javax.net.ssl.trustStore", parametros.getProperty("cte.certificado.keystore"));
            System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
            System.out.println(parametros.getProperty("cte.certificado.keystore"));

Essas são as minhas configurações Iniciais
Aqui está o arquivo parâmetros:
#Thu Apr 22 10:29:36 BRT 2010
cte.certificado.pass=*******
cte.certificado.keystore=C:/Users/Bruno/Documents/NetBeansProjects/TesteWebService/jssecacerts
cte.certificado.tipo=PKCS11
cte.certificado.tokencfg=token.cfg

O arquivo token.cfg
name = eToken
library = c:/windows/system32/aetpkss1.dll

quando eu tento enviar o erro que aparece é
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)

Conforme pesquisei eu acho que este problema é em relação ao provider....
pois agora eu coloquei ks.getType em:
System.setProperty("javax.net.ssl.keyStoreProvider", ks.getType());//"SunPKCS11-eToken");// (SmartCard, Safesig,
mas eu já tentei com os outros
e quando eu coloco p.getName() que é o nome do parâmetro que eu carreguei pelo token.cfg
o erro muda para:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Se alguém puder ajudar eu ficarei muito grato!
estou precisando muito passar por este problema

até mais

3 Respostas

B

será que o problema não pode ser em relação à alguma biblioteca que eu estou esquecendo de adicionar ao projeto?

B

Olá pessoal, novamente
sei que as respostas aqui estão efusivas
mas enquanto eu não solucionar vou colocando os meus passos na pesquisa, para que seja útil se um dia alguém precisar

Acabei por solucionar os erros de validade da segurança, pois o que estava errado no que eu estava fazendo era somente o truststore

ps: agora as minhas pesquisas também podem contar com o certificado A1

Cooontuudo, agora, as minhas requisições geram um novo erro “400 Bad Request”
ao que parece, eu devo estar com erro no xml
ou algum outro detalhe

se alguém puder me ajudar eu ficaria grato
enquanto isto vou continuar a correr atrás

A++

R

Bruno, como você conseguiu resolver, estou com o mesmo problema.

unable to find valid certification path to requested target

Criado 6 de maio de 2010
Ultima resposta 29 de mar. de 2011
Respostas 3
Participantes 2