錯誤信息:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
詳細錯誤信息:
1 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 2 at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 3 at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) 4 at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) 5 at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) 6 at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) 7 at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) 8 at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) 9 at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) 10 at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) 11 at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 12 at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 13 at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) 14 at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) 15 at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 16 at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) 17 at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 18 at com.sojson.www.zhanzhang.manager.HTTPNewManager.request(HTTPNewManager.java:106) 19 at com.sojson.www.zhanzhang.manager.HttpManager.request(HttpManager.java:148) 20 at com.sojson.www.zhanzhang.controller.HTTPRequestIndexController.request(HTTPRequestIndexController.java:102) 21 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 22 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 23 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 24 at java.lang.reflect.Method.invoke(Method.java:606) 25 at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 26 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) 27 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 28 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817) 29 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731) 30 at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 31 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 32 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 33 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 34 at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870) 35 at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 36 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) 37 at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 38 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 39 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 40 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 41 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 42 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 43 at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:250) 44 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 45 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 46 at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) 47 at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) 48 at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) 49 at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 50 at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) 51 at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 52 at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) 53 at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 54 at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 55 at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 56 at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) 57 at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 58 at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 59 at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) 60 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 61 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 62 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) 63 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 64 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 65 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 66 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 67 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 68 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 69 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 70 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 71 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 72 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 73 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 74 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) 75 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) 76 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 77 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 78 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 79 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 80 at java.lang.Thread.run(Thread.java:745) 81 Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 82 at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385) 83 at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 84 at sun.security.validator.Validator.validate(Validator.java:260) 85 at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) 86 at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) 87 at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) 88 at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323) 89 ... 74 more
解決方案
方案一:
按照要求,把證書上傳到服務器上,具體方法自行百度解決,這里不做敘述。
方案二:
添加下面的代碼和工具類,工具類在下面附件中有,直接下載即可。
//省略代碼。。。 realUrl = new URL(url); if("https".equalsIgnoreCase(realUrl.getProtocol())){ SslUtils.ignoreSsl(); } //省略代碼。。。
然后工具類SslUtils 再附件中下載。即可解決因為沒 SSL 證書報錯。
Java 信任所有 SSL 證書, HTTPS 請求拋錯,忽略證書請求完美解決
附件下載
http://files.cnblogs.com/files/xjbBill/SslUtils.zip
