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文件的正确方法。一旦创建,它可以在任何机器上使用(不仅仅是生成它的机器)。

+0

您是否发现像绝对和相对路径的问题? – 2013-07-16 23:52:19

+0

我拼错了我的.pem文件的文件名。 - 保持俯视直到我看到这个答案,这是什么让我“仔细”看看它。 – James 2014-07-03 19:41:14

您是否可以在服务器中使用相同的.pem文件?正如你所说......在任何机器上。

我按照这个教程,我可以从我的机器发送消息(其中一个是生成的证书),但我试过复制所有文件,并在另一台机器上运行脚本,我得到了相同的错误,你有得到。

您是如何使其在另一台机器上工作的?你安装了.pem文件吗?任何特殊配置?

干杯

+0

至于“安装”.pem文件,我所要做的就是将它复制到我的服务器上的本地目录。问题是我把我的PHP脚本移动到了一个cron目录,在那里我保留了我的cron作业,并且无法复制.pem文件。一旦我移动.pem文件,一切都很好。我的托管服务提供商正在运行Linux,所以.pem文件应该适用于任何平台。 – 2009-12-09 00:14:29

+0

文件权限可能是一个问题。我的.pem设置为644. – 2009-12-09 00:15:21

+0

@Jason George 我更改了文件权限,但错误没有更改。 我已经完成了你所说的几乎相同的事情。我配置了我的机器,进行了测试,并且一切都正常。所以,我试图复制一切,并把我有另一个mac,但在这台机器我得到这个错误。 – vfn 2009-12-09 01:36:03