我在使用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以允许运行此类服务?
我尝试了几乎所有的东西,发布这个,因为我觉得这个问题真的很困难。
提前谢谢。
答案 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证书。而事情就像魔法一样。
我很高兴你发布了什么,因为它引导我阅读更多关于密钥库的内容。
感谢您的帮助。