我正在尝试使用 PyAPNS 将推送通知发送到 iPhone 应用程序。我们已经完成了从 Apple 开发中心获取证书的过程,效果很好;但是,我们遵循了几个不同的教程,了解如何将证书和私钥放在一个 .pem 文件中,并且对于所有这些教程,尝试使用生成的证书从我们的 Web 服务器使用 OpenSSL 连接到 APNS 服务器这个错误:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns.pem
CONNECTED(00000003)
depth=1 C = US, O = "Entrust, Inc.", OU = www.entrust.net/rpa is incorporated by reference, OU = "(c) 2009 Entrust, Inc.", CN = Entrust Certification Authority - L1C
verify error:num=20:unable to get local issuer certificate
verify return:0
[...certificate chain, server certificate, etc.]
有时我们可以在这一切结束时输入一些东西,并且在我们按下回车之前连接不会关闭,有时不会(它立即关闭),但即使我们看起来有连接,当我们尝试时 PyAPNS 总是失败发送推送通知,给出错误“故障 500:'无法连接到 APNS 服务器。'”,我只能假设与“无法获取本地颁发者证书”的原因相同——尽管我不知道这可能是什么原因。
我们一直关注的教程包括:
http://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/
http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
http://www.nasoni.net/2010/12/02/apns-client-development-certificate/
是的,我们一直在从私钥中删除密码,当我们尝试连接 OpenSSL 时它不会要求它,所以大概这部分工作正常。
我们不知道出了什么问题。令人恼火的是,所有这些教程(显然还有 Apple)都认为您使用的是 Mac,而我正在 Windows 上开发,而服务器(我正在开发的服务器)是 Ubuntu;在将结果文件发送给我以上传到服务器并执行最后步骤之前,我在 Mac 上的同事一直在为第一步做各种前缀。这可能与它有关吗?或者是否有一个必要的服务器设置步骤在任何地方都被省略了?