使用 java 版本 1.6.0_37 的 Centos 中的 APNS NetworkIOException SSLHandshake 失败

Posted

技术标签:

【中文标题】使用 java 版本 1.6.0_37 的 Centos 中的 APNS NetworkIOException SSLHandshake 失败【英文标题】:APNS NetworkIOException SSLHandshake Failure in Centos with java version 1.6.0_37 【发布时间】:2016-04-13 15:09:13 【问题描述】:

我在将通知推送到我的 Linux 服务器中存在的所有应用程序的 APNS 服务器时遇到问题。

它有时会推送通知,有时会抛出错误,检查证书没问题。

我使用 java_apns 来推送通知。

以下是我遇到的错误,谁能帮我解决这个问题。

2016-04-13 10:15:41,245 [pool-1-thread-1] WARN  com.timeinc.ae.push.services.APNSService - com_timesmedia_countrylife_magazine Error posting to multiple devices
com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at com.notnoop.apns.internal.Utilities.wrapAndThrowAsRuntimeException(Utilities.java:284)
    at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:342)
    at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:312)
    at com.notnoop.apns.internal.ApnsPooledConnection$2.call(ApnsPooledConnection.java:43)
    at com.notnoop.apns.internal.ApnsPooledConnection$2.call(ApnsPooledConnection.java:41)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:701)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:941)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1320)
    at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:698)
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:119)
    at java.io.OutputStream.write(OutputStream.java:75)
    at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:328)
    ... 8 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at sun.security.ssl.InputRecord.read(InputRecord.java:482)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:922)
    ... 13 more

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我的代码在证书上运行良好,但突然因为握手失败而停止工作。

我们终于发现问题是当证书在外部战争文件(一些本地文件夹)时。

1) 使用 apns_test 进行第一次测试(节点测试) 如果这会发送测试通知,那么您的安全配置有问题。

最后将证书放入war文件中。如果您正在测试侧文件夹,那么您可能会遇到这个问题。

当我将证书放入war文件时,这对我有用。

【讨论】:

以上是关于使用 java 版本 1.6.0_37 的 Centos 中的 APNS NetworkIOException SSLHandshake 失败的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse开发环境配置

如何查看linux版本的型号

Eclipse开发环境配置

在 Mac OS X 上安装了 Java 7,但终端仍在使用版本 6

CentOS 6.5移除openJDK及JDK安装环境变量配置及JDK版本切换

错误:检查jps时找不到libjava.so