Boa a tarde a todos,
Prezados,
Estou desenvolvendo um sistema de Nota Fiscal Eletronica - NFe, estou efetuando a parte de consulta de CNPJ para retornar a Inscrição Municipal. O XML esta sendo gerado corretamente, e validado de acordo com o esquema passado pela prefeitura, porem na hora de enviar os dados via web service aparece o seguinte erro :
Obs: Este erro e problema com o path, porem ja mudei os arquivos de diretorio, porem nao houve sucesso, continua com o mesmo erro, sendo assim alguem poderia ajudar ?
org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:83)
at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:189)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:364)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:208)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at br.gov.sp.prefeitura.www.nfe.LoteNFeStub.ConsultaCNPJ(LoteNFeStub.java:526)
at br.com.cienci.nfe.enquiry.WebServiceEnquiry.enquiryCnpj(WebServiceEnquiry.java:89)
at br.com.cienci.ws.ConsultaCnpjWs.getConsultaWS(ConsultaCnpjWs.java:68)
at br.com.cienci.nfe.parser.Teste.main(Teste.java:56)
Caused by: com.ctc.wstx.exc.WstxIOException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:313)
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:146)
at org.apache.axis2.databinding.utils.writer.MTOMAwareXMLSerializer.flush(MTOMAwareXMLSerializer.java:79)
at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:94)
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:664)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:918)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:240)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:228)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
at org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:471)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
… 21 more
Caused by: 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(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1591)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:975)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:104)
at org.apache.commons.httpclient.ChunkedOutputStream.flushCacheWithAppend(ChunkedOutputStream.java:121)
at org.apache.commons.httpclient.ChunkedOutputStream.write(ChunkedOutputStream.java:179)
at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:96)
at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)
… 32 more
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(PKIXValidator.java:285)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
… 46 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
Error in Enquiry!!
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280)
… 52 more
Segue abaixo o codigo da classe responsavel pelo envio do codigo;
package br.com.cienci.nfe.enquiry;
import br.com.cienci.nfe.parser.NfeUtil;
import br.gov.sp.prefeitura.www.nfe.LoteNFeStub;
import br.gov.sp.prefeitura.www.nfe.LoteNFeStub.CancelamentoNFeRequest;
import br.gov.sp.prefeitura.www.nfe.LoteNFeStub.CancelamentoNFeResponse;
import br.gov.sp.prefeitura.www.nfe.LoteNFeStub.ConsultaCNPJRequest;
import br.gov.sp.prefeitura.www.nfe.LoteNFeStub.ConsultaCNPJResponse;
import java.io.File;
import java.io.IOException;
import java.rmi.RemoteException;
import java.security.Security;
import javax.swing.JOptionPane;
import org.apache.axis2.AxisFault;
/**
* WebServiceEnquiry.java
* Criado em 16/10/2008
* @author Ciro S. Santos
* @version 1.0
*
* Classe que consome o Web Service de consulta CNPJ da prefeitura de SP.
*/
public class WebServiceEnquiry {
/**
* Chave privada para a conexão segura com HTTPS
*/
private String privateKey;
/**
* Senha da chave privada para a conexão segura com HTTPS
*/
private String passPrivateKey;
/**
* Chave publica para a conexão segura com HTTPS
*/
private String jks;
/**
* Senha da chave publica para a conexão segura com HTTPS
*/
private String passJks;
/**
* Retorna uma String no formato XML com a resposta da consulta do web service.
* Esse método faz o consumo do web service.
*
* @param xml
* @param privateKey
* @param passPrivateKey
* @param jks
* @param passJks
* @return String
*/
public String enquiryCnpj(String xml, String privateKey, String passPrivateKey,String jks, String passJks) {
String result = "";
File file1 = new File("C:\\teste\\teste");
String pathJks = file1+"\\"+ jks; // esse e o nome do arquivo com a extenção JKS
String pathPrivate = file1+"\\"+privateKey;// esse e o nome do arquivo do certificado digital.
this.privateKey = pathPrivate;
this.jks = pathJks;
this.passPrivateKey = passPrivateKey;
this.passJks = passJks;
if (this.setSecurityProperties()) {
ConsultaCNPJRequest consultaCNPJRequest = null;
ConsultaCNPJResponse consultaCNPJResponse = null;
LoteNFeStub stub = null;
try {
consultaCNPJRequest = new ConsultaCNPJRequest();
consultaCNPJRequest.setVersaoSchema(1);
consultaCNPJRequest.setMensagemXML(xml);
stub = new LoteNFeStub();
consultaCNPJResponse = stub.ConsultaCNPJ(consultaCNPJRequest);
result = consultaCNPJResponse.getRetornoXML();
} catch (AxisFault ex) {
ex.printStackTrace();
return null;
} catch (RemoteException ex) {
ex.printStackTrace();
return null;
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
} else {
System.out.println("Problems in set security properties");
return null;
}
return result;
}
/*
public String enquirySolicitacaoCancelamento(String xml, String privateKey, String passPrivateKey,String jks, String passJks){
String result = "";
File file1 = new File("src\\securityResources");
String pathPrivate = file1.getAbsolutePath() + "\\" + privateKey;
String pathJks = file1.getAbsolutePath() + "\\" + jks;
this.privateKey = NfeUtil.generatePathToSecurity(pathPrivate);
this.jks = NfeUtil.generatePathToSecurityJks(pathJks);
this.passPrivateKey = passPrivateKey;
this.passJks = passJks;
if (this.setSecurityProperties()) {
CancelamentoNFeRequest cancelmentoNFErequest = null;
CancelamentoNFeResponse cancelamentoNFEresponse = null;
LoteNFeStub stub = null;
try {
cancelmentoNFErequest = new CancelamentoNFeRequest();
cancelmentoNFErequest.setVersaoSchema(1);
cancelmentoNFErequest.setMensagemXML(xml);
stub = new LoteNFeStub();
cancelamentoNFEresponse = stub.CancelamentoNFe(cancelmentoNFErequest);
result = cancelamentoNFEresponse.getRetornoXML();
} catch (AxisFault ex) {
ex.printStackTrace();
return null;
} catch (RemoteException ex) {
ex.printStackTrace();
return null;
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
}
return "";
}
/**
* Retorna true se o proxy para uma conexão segura foi configurado corretamente e false
* se ocorrer algum tipo de erro.
*
* @return boolean
*/
private boolean setSecurityProperties() {
try {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", this.privateKey);
System.setProperty("javax.net.ssl.keyStorePassword", this.passPrivateKey);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", this.jks);
System.setProperty("javax.net.ssl.trustStorePassword", this.passJks);
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
return true;
}
}