Problemas SSL? tomcat

3 respostas
E

Galera, boa tarde!!

Não sei como colocar direito o titulo desse tópico e não sei se vou conseguir explicar o que está ocorrendo, vamos lá:

Tenho um sistema que faz emissão de nota fiscal eletrônica (entre outras coisas), funciona tudo certinho.
Há um tempo atrás eu implementei um envio de email no sistema, daí começaram os problemas, quando funcionava o envio de email, não funcionava o envio de notas, e vice-versa.
Dai eu separei o envio de email em um projeto a parte, não encontrei forma de resolver o problema.
Mas agora eu preciso implementar uma rotina do sistema (e não pode ficar separada) e estou com o mesmo problema.
Por exemplo:
O sistema está rodando, tudo beleza, emitindo as notas fiscais, maravilha, dai eu preciso rodar a rotina nova, aparece esse erro:

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 sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1439) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:878) at sun.security.ssl.Handshaker.process_record(Handshaker.java:814) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(HttpsURLConnectionOldImpl.java:220) at br.com.comode.audi.manager.ManagerAUDI.estornarPontos(ManagerAUDI.java:64) at br.com.comode.audi.manager.ManagerAUDI.estornaPontos(ManagerAUDI.java:141) at flysolution.flyflex.centrodedistribuicao.functions.CentroDeDistribuicaoFunctions.estornarPontos(CentroDeDistribuicaoFunctions.java:406) at flysolution.flyflex.centrodedistribuicao.functions.CentroDeDistribuicaoFunctions.cancelarPedidoSemNFEmitida(CentroDeDistribuicaoFunctions.java:349) at flysolution.flyflex.web.action.infra.pedidovenda.ShowAction.loadData(ShowAction.java:242) at flysolution.framework.action.basic.BasicShowAction.execute(BasicShowAction.java:86) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:745) 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:385) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) at sun.security.validator.Validator.validate(Validator.java:260) at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1421) ... 35 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:196) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380) ... 41 more

Dai se eu derrubo o tomcat e subo de novo, funciona a rotina nova (desde que eu não envie nenhuma nota antes), mas ocorre esse mesmo erro se eu for emitir nota fiscal (após rodar a rotina nova).

O que eu to percebendo é que funciona ou um ou outro.

Observações:
Essa minha rotina nova é uma requisição post que eu faço pra um outro servidor

URL url = new URL(_url); URLConnection con = url.openConnection(); // activate the output con.setDoOutput(true); PrintStream ps = new PrintStream(con.getOutputStream());//o erro ocorre aqui

Alguém já passou por isso?

3 Respostas

A

Cara, esse teu erro está um pouco evidente. Dá uma pesquisada pelo último erro da stacktrace:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Ele está tendo que usar um certificado de segurança, só que quando utilizas para um dos serviços, deve ficar alocado ou alguma coisa assim. Pesquise esse erro no Google. Eu achei algumas soluções onde trocar a versão da JDK para uma mais nova foi suficiente. Qual versão do Java você utiliza?

Abs []

E

Boa tarde Adriano

Eu to pesquisando, o que acontece é que não consegui ainda achar solução, por isso recorri ao guj.
To usando java 7 a versão 1.7.0_72

Eu imagino que possa ser algum cache que fica gravado no tomcat e tals…porque se eu der um restart no tomcat funciona (um dos dois - o que eu fizer primeiro) mas preciso descobrir a causa raiz pra colocar os dois serviços em funcionamento.

L

olá Edifran.

Estou passando pelo mesmíssimo problema que você.
Temos implementado o envio das notas que funciona normalmente, e temos tambem o envio de email que também funciona.
Porém quando um esta ok, o outro da erro.

Exatamente o mesmo erro que o teu.

conseguiu achar a solução para o sou problema?

Criado 10 de dezembro de 2014
Ultima resposta 6 de mai. de 2015
Respostas 3
Participantes 3