diff --git a/README.md b/README.md index 70ccabde..2c8608df 100644 --- a/README.md +++ b/README.md @@ -398,264 +398,3 @@ Weblogic在使用jpush-api-java-client时需要注意的一些事项。 + 检查官网证书,观察对应证书的指纹 + 比较两个指纹是否一致,如下图所示 ![jpush_weblogic](https://raw.githubusercontent.com/jpush/jpush-docs/master/zh/jpush/server/3rd/image/weblogic.png) - -#### 异常记录 -**证书错误异常** - -``` -Can not connect to JPush Server. Please ensure your internet connection is ok. -If the problem persists, please let us know at support@jpush.cn. -javax.net.ssl.SSLHandshakeException: General SSLEngine problem - at com.sun.net.ssl.internal.ssl.Handshaker.checkThrown(Handshaker.java:1015) - at com.sun.net.ssl.internal.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:485) - at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1128) - at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1100) - at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:452) - at weblogic.security.SSL.jsseadapter.JaSSLEngine$1.run(JaSSLEngine.java:68) - at weblogic.security.SSL.jsseadapter.JaSSLEngine.doAction(JaSSLEngine.java:732) - at weblogic.security.SSL.jsseadapter.JaSSLEngine.wrap(JaSSLEngine.java:66) - at weblogic.socket.JSSEFilterImpl.wrapAndWrite(JSSEFilterImpl.java:619) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:91) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:64) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59) - at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:390) - at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78) - at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) - at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) - at java.io.FilterOutputStream.flush(FilterOutputStream.java:123) - at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) - at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:280) - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:153) - at cn.jpush.api.common.connection.NativeHttpClient.doRequest(NativeHttpClient.java:93) - at cn.jpush.api.common.connection.NativeHttpClient.sendPost(NativeHttpClient.java:80) - at cn.jpush.api.push.PushClient.sendPush(PushClient.java:119) - at cn.jpush.api.JPushClient.sendMessageAll(JPushClient.java:362) - at cn.liucy.hello.HelloPush.doPost(HelloPush.java:40) - at cn.liucy.hello.HelloPush.doGet(HelloPush.java:29) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) - at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) - at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) - at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) - at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) - at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) - at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) - at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) - at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) - at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) -Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem - at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) - at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1528) - at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:243) - at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235) - at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206) - at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136) - at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593) - at com.sun.net.ssl.internal.ssl.Handshaker$1.run(Handshaker.java:533) - at java.security.AccessController.doPrivileged(Native Method) - at com.sun.net.ssl.internal.ssl.Handshaker$DelegatedTask.run(Handshaker.java:952) - at weblogic.socket.JSSEFilterImpl.doTasks(JSSEFilterImpl.java:186) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:95) - ... 31 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:323) - at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:217) - 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 weblogic.security.SSL.jsseadapter.JaTrustManager.checkServerTrusted(JaTrustManager.java:125) - at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1198) - ... 38 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) - at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:318) - ... 44 more -``` - -**未使用JSSE SSL异常** -``` -Can not connect to JPush Server. Please ensure your internet connection is ok. -If the problem persists, please let us know at support@jpush.cn. -javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received. - at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireException(Unknown Source) - at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireAlertSent(Unknown Source) - at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert(Unknown Source) - at com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessages(Unknown Source) - at com.certicom.tls.record.MessageInterpreter.interpretContent(Unknown Source) - at com.certicom.tls.record.MessageInterpreter.decryptMessage(Unknown Source) - at com.certicom.tls.record.ReadHandler.processRecord(Unknown Source) - at com.certicom.tls.record.ReadHandler.readRecord(Unknown Source) - at com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete(Unknown Source) - at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake(Unknown Source) - at com.certicom.tls.record.WriteHandler.write(Unknown Source) - at com.certicom.io.OutputSSLIOStreamWrapper.write(Unknown Source) - at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) - at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) - at java.io.FilterOutputStream.flush(FilterOutputStream.java:123) - at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) - at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:280) - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:153) - at cn.jpush.api.common.connection.NativeHttpClient.doRequest(NativeHttpClient.java:93) - at cn.jpush.api.common.connection.NativeHttpClient.sendPost(NativeHttpClient.java:80) - at cn.jpush.api.push.PushClient.sendPush(PushClient.java:119) - at cn.jpush.api.JPushClient.sendMessageAll(JPushClient.java:362) - at cn.liucy.hello.HelloPush.doPost(HelloPush.java:40) - at cn.liucy.hello.HelloPush.doGet(HelloPush.java:29) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) - at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) - at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) - at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) - at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) - at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) - at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) - at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) - at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) - at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) -15/12/09 13:52:03 ERROR hello.HelloPush: Failed to server. -cn.jpush.api.common.resp.APIConnectionException: Connection IO error. -Can not connect to JPush Server. Please ensure your internet connection is ok. -If the problem persists, please let us know at support@jpush.cn. - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:242) - at cn.jpush.api.common.connection.NativeHttpClient.doRequest(NativeHttpClient.java:93) - at cn.jpush.api.common.connection.NativeHttpClient.sendPost(NativeHttpClient.java:80) - at cn.jpush.api.push.PushClient.sendPush(PushClient.java:119) - at cn.jpush.api.JPushClient.sendMessageAll(JPushClient.java:362) - at cn.liucy.hello.HelloPush.doPost(HelloPush.java:40) - at cn.liucy.hello.HelloPush.doGet(HelloPush.java:29) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) - at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) - at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) - at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) - at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) - at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) - at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) - at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) - at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) - at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) -Caused by: javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received. - at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireException(Unknown Source) - at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireAlertSent(Unknown Source) - at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert(Unknown Source) - at com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessages(Unknown Source) - at com.certicom.tls.record.MessageInterpreter.interpretContent(Unknown Source) - at com.certicom.tls.record.MessageInterpreter.decryptMessage(Unknown Source) - at com.certicom.tls.record.ReadHandler.processRecord(Unknown Source) - at com.certicom.tls.record.ReadHandler.readRecord(Unknown Source) - at com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete(Unknown Source) - at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake(Unknown Source) - at com.certicom.tls.record.WriteHandler.write(Unknown Source) - at com.certicom.io.OutputSSLIOStreamWrapper.write(Unknown Source) - at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) - at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) - at java.io.FilterOutputStream.flush(FilterOutputStream.java:123) - at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) - at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:280) - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:153) - ... 21 more -``` - -**Hostname验证失败异常** - -``` -Can not connect to JPush Server. Please ensure your internet connection is ok. -If the problem persists, please let us know at support@jpush.cn. -javax.net.ssl.SSLKeyException: Hostname verification failed: HostnameVerifier=weblogic.security.utils.SSLWLSHostnameVerifier, hostname=api.jpush.cn. - at weblogic.security.SSL.jsseadapter.JaSSLEngine.doPostHandshake(JaSSLEngine.java:675) - at weblogic.security.SSL.jsseadapter.JaSSLEngine.doAction(JaSSLEngine.java:746) - at weblogic.security.SSL.jsseadapter.JaSSLEngine.unwrap(JaSSLEngine.java:132) - at weblogic.socket.JSSEFilterImpl.unwrap(JSSEFilterImpl.java:505) - at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:448) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:80) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:64) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59) - at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:390) - at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78) - at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) - at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) - at java.io.FilterOutputStream.flush(FilterOutputStream.java:123) - at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) - at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:280) - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:153) - at cn.jpush.api.common.connection.NativeHttpClient.doRequest(NativeHttpClient.java:93) - at cn.jpush.api.common.connection.NativeHttpClient.sendPost(NativeHttpClient.java:80) - at cn.jpush.api.push.PushClient.sendPush(PushClient.java:119) - at cn.jpush.api.JPushClient.sendMessageAll(JPushClient.java:362) - at cn.liucy.hello.HelloPush.doPost(HelloPush.java:40) - at cn.liucy.hello.HelloPush.doGet(HelloPush.java:29) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) - at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) - at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) - at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) - at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) - at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) - at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) - at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) - at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) - at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) -15/12/09 14:27:17 ERROR hello.HelloPush: Failed to server. -cn.jpush.api.common.resp.APIConnectionException: Connection IO error. -Can not connect to JPush Server. Please ensure your internet connection is ok. -If the problem persists, please let us know at support@jpush.cn. - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:242) - at cn.jpush.api.common.connection.NativeHttpClient.doRequest(NativeHttpClient.java:93) - at cn.jpush.api.common.connection.NativeHttpClient.sendPost(NativeHttpClient.java:80) - at cn.jpush.api.push.PushClient.sendPush(PushClient.java:119) - at cn.jpush.api.JPushClient.sendMessageAll(JPushClient.java:362) - at cn.liucy.hello.HelloPush.doPost(HelloPush.java:40) - at cn.liucy.hello.HelloPush.doGet(HelloPush.java:29) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) - at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) - at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) - at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732) - at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) - at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) - at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) - at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) - at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) - at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) - at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) - at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) -Caused by: javax.net.ssl.SSLKeyException: Hostname verification failed: HostnameVerifier=weblogic.security.utils.SSLWLSHostnameVerifier, hostname=api.jpush.cn. - at weblogic.security.SSL.jsseadapter.JaSSLEngine.doPostHandshake(JaSSLEngine.java:675) - at weblogic.security.SSL.jsseadapter.JaSSLEngine.doAction(JaSSLEngine.java:746) - at weblogic.security.SSL.jsseadapter.JaSSLEngine.unwrap(JaSSLEngine.java:132) - at weblogic.socket.JSSEFilterImpl.unwrap(JSSEFilterImpl.java:505) - at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:448) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:80) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:64) - at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59) - at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:390) - at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78) - at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) - at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) - at java.io.FilterOutputStream.flush(FilterOutputStream.java:123) - at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) - at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:280) - at cn.jpush.api.common.connection.NativeHttpClient._doRequest(NativeHttpClient.java:153) - ... 21 more -``` - -