JavAPNS 在本地运行但在 Centos 上不运行
JavAPNS Runs Locally but not on Centos
问题
我在 centos 上设置 Apple APNS 时遇到问题。
我部署了我的 Apache tomcat 并且工作正常。我也在使用 Javapns 发送推送消息。
我的推送通知在 windows 上运行良好(在 eclipse 和独立的 Apache 上)。但是一旦我将应用程序部署到服务器(centos 6)我得到错误:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 未找到可信证书
正如我所说,我使用的是在 Windows 上完美运行的 p12 证书。但在 Centos 上没有运气。
环境:
Apache Tomcat 与 Spring 4 部署的网络应用程序。 运行在 centos 6 上使用 Java 1.7.57。
当然使用 Javapns 来启动推送通知。而且我认为值得一提的是我的P12证书放在WEB-INF/certs/certificate.p12.
里面
-我的网络服务器没有 SSL 证书。
我的问题:
尽管 Javapns 文档指出 Javapns 被设计为作为 web 应用程序的一部分甚至独立工作,我是否需要进行任何特殊配置在服务器上修改以允许我的服务 运行?
让我困惑的是同一个 p12 证书在本地有效但在 linux?
这与服务器上的安全链有关吗?或 Apache tomcat 的设置以允许此类服务 运行?
我几乎尝试了所有方法,因为我觉得这个问题真的很困难,所以发布了这个。
提前致谢。
使用 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/
感谢 muenzpraeger 的建议,但这不是解决方案。
我可以通过 http://cloudfields.net/blog/ios-push-notifications-encryption/
上的 post 解决这个问题
所述问题与验证通过 SSL 进行通信的证书有关。我必须通过命令行获取 Apple APNS 证书。事情就像变魔术一样有效。
我很高兴你 post 编辑了它,因为它让我阅读了更多关于密钥库的信息。
感谢您的帮助。
问题
我在 centos 上设置 Apple APNS 时遇到问题。 我部署了我的 Apache tomcat 并且工作正常。我也在使用 Javapns 发送推送消息。
我的推送通知在 windows 上运行良好(在 eclipse 和独立的 Apache 上)。但是一旦我将应用程序部署到服务器(centos 6)我得到错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 未找到可信证书
正如我所说,我使用的是在 Windows 上完美运行的 p12 证书。但在 Centos 上没有运气。
环境:
Apache Tomcat 与 Spring 4 部署的网络应用程序。 运行在 centos 6 上使用 Java 1.7.57。 当然使用 Javapns 来启动推送通知。而且我认为值得一提的是我的P12证书放在WEB-INF/certs/certificate.p12.
里面-我的网络服务器没有 SSL 证书。
我的问题:
尽管 Javapns 文档指出 Javapns 被设计为作为 web 应用程序的一部分甚至独立工作,我是否需要进行任何特殊配置在服务器上修改以允许我的服务 运行?
让我困惑的是同一个 p12 证书在本地有效但在 linux?
这与服务器上的安全链有关吗?或 Apache tomcat 的设置以允许此类服务 运行?
我几乎尝试了所有方法,因为我觉得这个问题真的很困难,所以发布了这个。
提前致谢。
使用 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/
感谢 muenzpraeger 的建议,但这不是解决方案。
我可以通过 http://cloudfields.net/blog/ios-push-notifications-encryption/
上的 post 解决这个问题所述问题与验证通过 SSL 进行通信的证书有关。我必须通过命令行获取 Apple APNS 证书。事情就像变魔术一样有效。
我很高兴你 post 编辑了它,因为它让我阅读了更多关于密钥库的信息。
感谢您的帮助。