0

问题

我在 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的设置以允许此类服务运行?

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

先感谢您。

4

2 回答 2

0

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

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

如果您在其中找不到 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/

于 2015-07-28T03:10:26.277 回答
0

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

我可以通过http://cloudfields.net/blog/ios-push-notifications-encryption/上的精彩帖子解决这个问题

所述问题与验证证书以通过 SSL 进行通信有关。我必须对 Apple APNS 证书进行命令行操作。事情就像魔术一样起作用。

不过,我很高兴您发布的内容让我阅读了有关密钥库的更多信息。

谢谢您的帮助。

于 2015-07-29T06:53:45.717 回答