我们已经使用 notnoop 实现了 APNS 连接。在过去的 5 个月里,我们一直在开发和 UAT 环境以及其他环境中对其进行测试。事情按预期工作,但部署到生产环境后我们很难让它工作,GCM 工作正常,只有 APNS 我们有困难。
最初存在来自防火墙的连接问题,我们已打开防火墙以连接到 2195
上的 gateway.push.apple.com
,因为较早的系统正在抛出 连接超时
。
现在系统正在抛出 No Trusted Certificate found
我在下面描述了我们已经采取的调试此问题的详细步骤。
请注意,只有当我将它部署到生产环境时才会发生这种情况,当它在 Tomcat 8.0 中运行时也会发生这种情况。我们做了一个小的 POC 来测试它是否可以在 tomcat 之外工作,并且它可以使用来自相同绝对路径的相同证书正常工作。
我们确实在更改实现后尝试使用证书的绝对路径,如下所示
APNS.newService().withCert(PRODcertificatePath, PRODcertificatePassword)
程序配置为使用 .withProductionDestination()
如果它正在使用生产证书,反之亦然,所以这个问题也得到了关注。
- 然后我们还尝试使用 ClassLoader
InputStream iss = ClassLoader.getSystemResourceAsStream("Axis-APNS.p12")
是的,我们在生产环境中确实有 JKS 文件,其详细信息在 server.xml 中配置,如下所示
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" sslProtocol="TLS" keystoreFile="/root/cert"
现在我们无法调试并找到根本原因,欢迎任何建议和问题。
最佳答案
作为解决方法,我重新设计了我的系统。不是从 tomcat 内部运行,而是使用 Quartz 批处理作业将其作为独立应用程序,系统运行正常。一旦我有时间找出为什么 tomcat 无法选择正确的证书,就会更新你们。非常感谢您抽出宝贵时间...如果您在上述问题上需要更多帮助,请给我发电子邮件。
谢谢,
阿玛 git
关于Java notnoop,APNS 未从 tomcat 内部找到受信任的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38626643/