spring-mvc - JavAPNS 在本地运行但在 Centos 上不运行

标签 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。在 centos 6 上运行。使用 Java 1.7.57。 当然使用 Javapns 来启动推送通知。我认为值得一提的是,我的 P12 证书位于 WEB-INF/certs/certificate.p12 中。

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

我的问题:

  • 尽管 Javapns 文档指出 Javapns 旨在作为网络应用程序的一部分甚至独立运行,但我是否必须在服务器上修改任何特殊配置才能运行我的服务?

  • 令我困惑的是,同一个 p12 证书在本地有效,但在 linux 上却无效?

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

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

提前谢谢你。

最佳答案

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

首先使用以下命令检查 <javabin>/keytool -list -keystore <javahome>/jre/lib/security/cacerts如果您在 JVM keystore 中找到 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/

关于spring-mvc - JavAPNS 在本地运行但在 Centos 上不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576246/

相关文章:

spring - 如何配置Spring Boot嵌入式Tomcat连接超时?

java - 如何在服务器启动时从 ServletContext 连接到同一 Tomcat 服务器上的文件

java - 如何在 Spring-Mvc 中缓存具有两个参数的方法

java - Office 加载项开发 - 格式错误的 GET URL (_host_Info=...)

spring - @Value 注解和 Environment API 的区别?

iphone - 推送通知徽章不来

push-notification - 无法连接到实时 'ssl://gateway.push.apple.com:2195'

ios - 无法从 didFinishLaunchingWithOptions 函数获取 launchOptions 数据

Spring MVC Hibernate 验证器类型不匹配异常

Java 8 jackson 验证