Nota Fiscal Eletrônica - Problemas ao importar .pfx para KeyStore

[quote=vcsmetallica]diogoj,

Tenho esse problema com o Axis. E ate nao resolvi, nao sei o pq isso acontece.

Att

[/quote]Estou com esse mesmo problema com o Axis2, será que você resolveu seu problema?
Tenho dois certificados (tokens) tipo A3, comprados e registrados pela mesma entidade (Certisign e ECP Brasil), não entendo o porque desse Forbiden.

org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:200) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at emissor.ws.h.status.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:173) at emissor.lib.NFe.getStatusServico(NFe.java:438) at emissor.ui.NotasFiscaisUI$1.run(NotasFiscaisUI.java:156)

Bom dia

Estou precisando fazer a implementação da NFe, segui os passos descritos acima mas to encontrando o seguinte erro:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
	at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
	at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
	at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
	at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.connect(Unknown Source)
	at com.windi.nfe.teste.NfeTeste.main(NfeTeste.java:32)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
	at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
	at sun.security.validator.Validator.validate(Unknown Source)
	at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source)
	at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
	at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
	... 12 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
	at java.security.cert.CertPathBuilder.build(Unknown Source)
	... 18 more

Segue o código fonte:

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:\\temp\\windi2.pfx");
		System.setProperty("javax.net.ssl.keyStorePassword", "rua progresso 167");

		System.setProperty("javax.net.ssl.trustStoreType", "JKS");
		System.setProperty("javax.net.ssl.trustStore", "C:\\nfe\\nfe.ks");

Certeza que o problema está:

[code]// ou nessa linha
System.setProperty(“javax.net.ssl.keyStore”, “C:\temp\windi2.pfx”);

// ou nessa linha
System.setProperty(“javax.net.ssl.trustStore”, “C:\nfe\nfe.ks”);[/code]

juliogalvaofilho,

primeiro instale o certificado e tente acessar a URL do web service via browser. Se não conseguir, pode ser problema no certificado. Se conseguir, tenta a sugestão do diogoj, acessa este post

http://www.guj.com.br/posts/list/148620.java#804676

e faz os passos que o alexegidio propõe. Para mim funcionou.

Configuração:

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");  
System.setProperty("javax.net.ssl.keyStore", "C:\\nfe\\CERT.pfx"); //pfx exportado, seguindo os passos do alexegidio 
System.setProperty("javax.net.ssl.keyStorePassword", "senha");  
  
System.setProperty("javax.net.ssl.trustStoreType", "JKS");  
System.setProperty("javax.net.ssl.trustStore", "C:\\nfe\\nfe.ks");
System.setProperty("javax.net.ssl.trustStorePassword", "senha");

NOTA: o arquivo jks eu obtenho da seguinte forma: eu acesso a URL do Web Service com o Firefox (não importe o certificado para o firefox, pelo menos não agora). Deve abrir uma página dizendo que a conexão não é confiável. Você deve clicar em ‘Entendo Riscos -> Adicionar Exceção’, e logo após em ‘Confirmar exceção de segurança’. Depois você vai em opções no firefox, acessa a aba ‘Criptografia’ e clica no botão Certificados. Acesse a aba Servidores e lá estarão alguns certificados. Você deve selecionar o certificado que tenha relação com o que você fazendo. No meu caso, o nome do certificado que aparece é ‘hom.nfe.fazendo.gov.br’ caso seja homologação e ‘www.nfe.fazendo.gov.br’ caso seja produção. Depois de selecionado, clique no botão exportar e será exportado um arquivo de extensão .cer. Este arquivo é que eu importo para o jks através do seguinte comando:

keytool -import -v -trustcacerts -alias nfe -file C:\cert\hom.nfe.fazenda.gov.br.crt - keystore C:\cert\nfe.jks -keypass 123456 -storepass 123456

Boa Sorte!

Boa noite

Acho que eu não captei alguma parte desse tutorial.

O estranho que acho que fiz exatamente os procedimentos descritos nos tutoriais e nada. Nem chega acessar pelo browser. Eu baixei os arquivos dos certificados do site do sefaz: https://nfe.sefazvirtual.rs.gov.br/. Importei no IE no firefox. Exportei eles, inclusive fiz um teste com um keystore e consegui ler a chave dentro do keystore. Porém na hora de executar o webservice dá esse maldito erro.

Engraçado que no IE eu fiz o teste do browser, tentando acessar pela URL e também não acessa.

Alguém poderia me enviar esse trustStore com os certificados?

[] s