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)
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
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
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:
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?