Apple推送通知服务:证书安装服务器端?
我按照How to build an Apple Push Notification provider server (tutorial)的指示尝试设置推送通知服务器。Apple推送通知服务:证书安装服务器端?
当我尝试用下面的PHP代码
// connect to apns server
$strAPNSUrl = 'ssl://gateway.sandbox.push.apple.com:2195';
$strAPNSCert = 'dev.pem';
// generate stream
$oStreamContext = stream_context_create();
stream_context_set_option($oStreamContext, 'ssl', 'local_cert', $strAPNSCert);
// create the socket connection
$oAPNS = stream_socket_client($strAPNSUrl, $iError, $strError, 2, STREAM_CLIENT_CONNECT, $oStreamContext);
我得到以下警告连接
Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert
基于什么样的信息,我已经能够找到在谷歌时,问题似乎是我的证书。
我正在OS X中生成我的csr和pem文件(pem文件按照教程中的说明)。一旦我创建了dev.pem,我将它上传到我的主机提供商并试图运行我的php脚本。这是创建和“安装”证书的正确方法吗?
我已经用完了调试思路。任何方向都会很棒。
dev.pem
的路径在我的服务器上不正确。
这些说明确实是生成.pem文件的正确方法。一旦创建,它可以在任何机器上使用(不仅仅是生成它的机器)。
您是否可以在服务器中使用相同的.pem文件?正如你所说......在任何机器上。
我按照这个教程,我可以从我的机器发送消息(其中一个是生成的证书),但我试过复制所有文件,并在另一台机器上运行脚本,我得到了相同的错误,你有得到。
您是如何使其在另一台机器上工作的?你安装了.pem文件吗?任何特殊配置?
干杯
至于“安装”.pem文件,我所要做的就是将它复制到我的服务器上的本地目录。问题是我把我的PHP脚本移动到了一个cron目录,在那里我保留了我的cron作业,并且无法复制.pem文件。一旦我移动.pem文件,一切都很好。我的托管服务提供商正在运行Linux,所以.pem文件应该适用于任何平台。 – 2009-12-09 00:14:29
文件权限可能是一个问题。我的.pem设置为644. – 2009-12-09 00:15:21
@Jason George 我更改了文件权限,但错误没有更改。 我已经完成了你所说的几乎相同的事情。我配置了我的机器,进行了测试,并且一切都正常。所以,我试图复制一切,并把我有另一个mac,但在这台机器我得到这个错误。 – vfn 2009-12-09 01:36:03
您是否发现像绝对和相对路径的问题? – 2013-07-16 23:52:19
我拼错了我的.pem文件的文件名。 - 保持俯视直到我看到这个答案,这是什么让我“仔细”看看它。 – James 2014-07-03 19:41:14