参考资料:http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2
我已经做了大量的研究,但在第二部分中,使用ck.pem文件运行push.php文件时遇到了问题。/Applications/XAMPP/bin/php push.php development
唯一的区别是我使用的是XAMPP而不是MAMP。我已确认所有扩展都已安装。
我可以通过以下方式在终端中测试我的证书:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem
它会要求我输入密码。我这样做一切都成功了。然而,当我运行push.php文件时,我会得到以下错误:
PHP警告:stream_socket_client():SSL操作失败,代码为1。OpenSSL错误消息: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed PHP警告:stream_socket_client():无法启用加密
PHP警告:stream_socket_client():无法连接ssl://gateway.sandbox.push.apple.com:2195(未知错误)位于第140行 php文件中的第140行是:
$this->fp = stream_socket_client('ssl://' . $this->server, $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
我发现了这些:
https://devforums.apple.com/message/1054840#1054840
我已经尝试了所有方法。我知道我的密码短语是正确的。我重新创建了证书、pem文件和密钥。但仍然不起作用。每次这样做时都会出现相同的错误。
我已经超出了困惑的范畴。
有人有任何建议或知道发生了什么吗?
谢谢!
更新 1:
我还尝试设置ck.pem文件的完整路径,但也无法修复错误。
$ctx
的值是什么?它上面设置了哪些选项? - oflannabhra-CAfile
:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -CAfile entrust-ca.pem
。您还应该使用TLS 1.0和SNI:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -CAfile entrust-ca.pem -tls1 -servername gateway.sandbox.push.apple.com
。 - jww