JavAPNS在本地运行,但不在Centos上运行

时间:2015-07-23 00:30:17

标签: spring-mvc tomcat apple-push-notifications centos6 javapns

问题

我在使用centos设置Apple APNS时遇到问题。 我部署了Apache tomcat并且运行正常。我也使用Javapns发送推送消息。

我的推送通知在Windows上运行正常(在eclipse和Apache独立版本中)。但是一旦我将应用程序部署到服务器(centos 6),我得到错误: javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:找不到可信证书

我正在使用一个在Windows上运行完美的p12证书。但是在Centos上没有运气。

环境:

使用Spring 4部署的Web应用程序的Apache Tomcat。使用Java 1.7.57在centos 6.上运行。 当然使用Javapns来启动推送通知。我认为值得一提的是我的P12证书放在WEB-INF / certs / certificate.p12中。

- 我的网络服务器没有SSL证书。

我的问题:

  • 尽管Javapns文档声明Javapns旨在作为Web应用程序的一部分工作,甚至是独立的,但我是否需要在服务器上修改以允许我的服务运行的特殊配置?

  • 让我感到困惑的是,相同的p12证书在本地工作但在Linux上不能工作?

  • 这是与服务器上的安全链相关的吗?还是设置Apache tomcat以允许运行此类服务?

我尝试了几乎所有的东西,发布这个,因为我觉得这个问题真的很困难。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用APNS时,您的服务器通过SSL连接到Apple APNS服务器。您收到的消息意味着您使用的Java环境不知道颁发的证书 - 因此无法构建信任链来验证服务器证书。

如果在JVM密钥库中找到Apple证书,请先使用以下命令<javabin>/keytool -list -keystore <javahome>/jre/lib/security/cacerts进行检查。

如果您没有找到Apple证书,可以使用此命令导入它们。

<javabin>/keytool -import -noprompt -trustcacerts -alias <an_alias> -file   <the_cert_file> -keystore <javahome>/jre/lib/security/cacerts -storepass changeit

您将在此处获得Apple根证书和中间证书:https://www.apple.com/certificateauthority/

答案 1 :(得分:0)

感谢 muenzpraeger 提出您的建议,但这不是解决方案。

我可以通过http://cloudfields.net/blog/ios-push-notifications-encryption/

上的精彩帖子解决这个问题

所述问题与验证证书以通过SSL进行通信有关。我不得不命令Apple APNS证书。而事情就像魔法一样。

我很高兴你发布了什么,因为它引导我阅读更多关于密钥库的内容。

感谢您的帮助。