0

对于 APNS,我尝试过使用我的证书和 Web 脚本(.php 文件),并且一切正常。现在我正在尝试使用客户端提供的证书做同样的事情,他已经向我发送了他的 .p12 文件,我已经完成了所有正确的 stpes 并为服务器生成了 .pem 文件,但它无法正常工作。我没明白为什么会这样??有人对此有想法吗?这是我用来发送通知的服务器文件。

    <?PHP
if($_POST['message'])
{   
    $deviceToken = '<my device token id>';
    $message = stripslashes($_POST['message']);
    $payload = '{
                    "aps" : 

                        { "alert" : "'.$message.'",
                          "badge" : 3,
                          "sound" : "bingbong.aiff"
                        } 
                }';
    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
    stream_context_set_option($ctx, 'ssl', 'passphrase', '<my passPharse>');
    $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    if(!$fp){
        print "Failed to connect $err $errstrn";
        return;
    } else {
        print "Notifications sent!";
    }
    $devArray = array();
    $devArray[] = $deviceToken;
    foreach($devArray as $deviceToken){
        $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack        ("n",strlen($payload)) . $payload;
        //print "sending message :" . $payload . "n";
        fwrite($fp, $msg);
    }
    fclose($fp);
}
?>
<form action="send-notification.php" method="post">
    <input type="text" name="message" maxlength="100">
    <input type="submit" value="Send Notification">
</form>

该文件适用于我的 .pem 文件,但在我的客户端文件中出现错误“无法连接 0”。我无法找到它的原因。

如果有人对此有所了解,请指导/告诉我解决问题的途径,拜托。

先感谢您。

4

2 回答 2

1

这是 .pem 文件的错误。如果您在从 .p12 创建 .pem 文件时没有提供正确的密码,那么该文件将被创建,但它不会工作。我通过远程登录检查了该过程并发现了问题。

谢谢大家的帮助和支持:)

于 2013-10-28T11:51:32.950 回答
0

我认为这是 p12 文件的问题,如果它没有正确制作,那么这个错误将会出现,并确保它再次使用以下代码生成 pem 文件,如果不工作,那么它的错误 p12 文件

openssl pkcs12 -in server_certificates_bundle_sandbox.p12 -out server_certificates_bundle_sandbox.pem -nodes -clcerts

于 2013-10-05T09:13:15.303 回答