NFe - Erro 403.7

Galera, estou com um problema que tento resolver há 3 dias e até agora nada.

Seguinte, estou tentando implementar um maldito sistema de NFe da seguinte maneira:

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.debug", "ssl");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "/home/evandro/nfe_homologacao.keystore");

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "/home/evandro/certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "********");

SOAPEnvelope reqEnv = new SOAPEnvelope();
 Object[] params = new Object[]
	    {
	    "", ""
	    };
reqEnv.addBodyElement(new RPCElement("", "NfeConsultaNF", params));

Call call = new Call("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta.asmx");
SOAPEnvelope respEnv = call.invoke(reqEnv);

E obtenho o seguinte erro:

HTTP Error 403.7 - Forbidden: SSL client certificate is required.

Pelo que entendi eu preciso enviar o meu certificado no SSL…já tentei enviar esse certificado de todo jeito e nada funciona…o mais legal é que pelo software do governo ele funciona e também consigo acessar o WSDL pelo navegador utilizando o meu certificado.

Galera, já pesquisei isso aqui no GUJ, o Google já cansou de me ver perguntando a mesma coisa e pra ser sincero não sei mais o que fazer…

Se alguém puder me ajudar eu agradeço.

[quote=evandrosantos]Galera, estou com um problema que tento resolver há 3 dias e até agora nada.

Seguinte, estou tentando implementar um maldito sistema de NFe da seguinte maneira:

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.debug", "ssl");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "/home/evandro/nfe_homologacao.keystore");

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "/home/evandro/certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "********");

SOAPEnvelope reqEnv = new SOAPEnvelope();
 Object[] params = new Object[]
	    {
	    "", ""
	    };
reqEnv.addBodyElement(new RPCElement("", "NfeConsultaNF", params));

Call call = new Call("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta.asmx");
SOAPEnvelope respEnv = call.invoke(reqEnv);

E obtenho o seguinte erro:

HTTP Error 403.7 - Forbidden: SSL client certificate is required.

Pelo que entendi eu preciso enviar o meu certificado no SSL…já tentei enviar esse certificado de todo jeito e nada funciona…o mais legal é que pelo software do governo ele funciona e também consigo acessar o WSDL pelo navegador utilizando o meu certificado.

Galera, já pesquisei isso aqui no GUJ, o Google já cansou de me ver perguntando a mesma coisa e pra ser sincero não sei mais o que fazer…

Se alguém puder me ajudar eu agradeço.[/quote]

Evandro, dê uma olhada na documentação da API javax.net.ssl e veja se realmente é possivel definir o keystore com um arquivo utilizando extensão *.pfx. Já que trata-se de um formato do Windows, talvez você tenha que extrair dele (arquivo) a chave privada. Não estou 100% certo, mas creio que é um caminho a seguir pois já vi problema semelhante em outro sistema.

realjn, muito obrigado pela dica mas andei pesquisando e criei o certificado utilizando o keystore e o openssl que encontrei nos links abaixo


http://www.agentbob.info/agentbob/79-AB.html


http://www.novell.com/support/search.do?cmd=displayKC&docType=kc&externalId=7004039&sliceId=1&docTypeID=DT_TID_1_1

Mas infelizmente não obtive sucesso em nada…o erro continua o mesmo:

HTTP Error 403.7 - Forbidden: SSL client certificate is required.

Algum mestre em NF-e poderia me ajudar? Já entrei num processo de desespero, pois não sei mais o que fazer.

Desde já agradeço

Só pra constar…cheguei ao ponto de testar no Window$ e dá o mesmo erro…

Então acredito que o problema não seja o certificado .pfx…outra coisa utilizo este mesmo certificado no emissor de NF-e disponibilizado pela SEFAZ de SP e td funciona!

Pelo amor de Deus, alguém me ajuda!.

Obrigado

ninguém?

Adiciona a seguinte linha

        System.setProperty("javax.net.ssl.trustStorePassword", password);

Esta faltando, pelo que observei no seu código.

Outro detalhe importante para debugar acrescente as seguintes linhas :

        System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
        System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true");

Ok

Cara, primeira coisa a fazer e gerar a keystore com o comando.

keytool -import -alias nfehomologado -keystore C:\\CertificadosHomologacao\\todosJuntosnfe.keystore -file C:\\CertificadosHomologacao\\homologacao_nfe_fazenda_pr_gov_br.cer

depois vc tem que fazer assim.

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
	
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "c:\\certificado.pfx");//Aqui vem o arquivo do certificado do seu cliente
System.setProperty("javax.net.ssl.keyStorePassword", "123456");//Aqui a senha deste certificado
	
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "c:\\keystore.keystore");//Aqui vem o arquivo criado através do comando keytool no passo 3
System.setProperty("javax.net.ssl.trustStorePassword", "123456");//Aqui a senha deste keystore

Ai já era.

Espero ter ajudado.

Antes de mais nada, obrigado pela resposta…

no trecho

keytool -import -alias nfehomologado -keystore C:\CertificadosHomologacao\todosJuntosnfe.keystore -file C:\CertificadosHomologacao\homologacao_nfe_fazenda_pr_gov_br.cer

o que vem a ser o “todosJuntosnfe.keystore”?

[quote=evandrosantos]Antes de mais nada, obrigado pela resposta…

no trecho

keytool -import -alias nfehomologado -keystore C:\CertificadosHomologacao\todosJuntosnfe.keystore -file C:\CertificadosHomologacao\homologacao_nfe_fazenda_pr_gov_br.cer

o que vem a ser o “todosJuntosnfe.keystore”?[/quote]

Vc deve colocar todos os .cer dentro deste keystore.

Na internet você acha documentos explicando como criar um keystore e adicionar os .cer dentro dele. Apanhei bastante desse cara no começo. Fiz um tutorial, posso estar postanto ele mais a noite.

att

Então, eu já fiz isso (pelo menos eu acho)…

Adicionei os seguintes .cer:

  • da homologação da SEFAZ/SP;
  • da raiz certificadora;

Tá faltando ou sobrando algo?

vcsmetallica, seria muito interessante, acredito que não só para mim, para consultas futuras de todos.

Obrigado

Galera, nimguém tem idéia do q tá rolando?

O certificado eu uso um .pfx para assinar e vai de boa…

Galera, consegui!!!

caso alguém precise, o que eu fiz foi o seguinte:

Meu certificado estava com o bit de Autenticação do Servidor ligado, sendo assim, utilizei o IE para desativar esse bit e exportei o certificado…

ai graças a Deus rolou!

galera, muito obrigado pela ajuda que me deram e até uma próxima.

Flws

Alguém ja montou a NFe do destinátario??
eu montei a nfe do destinatário , mas quando valido da um erro loco…

org.xml.sax.SAXParseException: Identity Constraint error: identity constraint "KeyRef@1d15445" has a keyref which refers to a key or unique that is out of scope.
se alguém tiver alguma dica…
alguem sabe de algum validador para o layout 2?

abraco

Olá Felipe.

Usa o PL006d que acho que não vai dar esse erro, testa ai.

Mack

cara…consegui arrumar… na verdade eu estava usando o pacote de schema PL_006preC ai baixei o PL_006e e ai foi na boa…
pq no 6e não tem essa chave de referencia que tem no 6c…
acho que os caras tinham meio q se perdido com o schema e o layout…

valeo ai Mackrophus … ta manjando de NFe heim… haha

opa
como ativar/desativar esse bit de autenticação
não achei como fazer isso
obrigado

evandrosantos como você fez esse esquema de exportar o certificado e desativar esse bit e