gpt4 book ai didi

iphone - 推送通知错误: "Unable to set local cert chain file"

转载 作者:行者123 更新时间:2023-12-03 18:26:47 25 4
gpt4 key购买 nike

我编写了一个测试 php 页面,该页面仅发送通用推送通知,并且它间歇性地工作。有时它会传递消息,有时我会收到此错误:

“消息:stream_socket_client()[function.stream-socket-client]:无法设置本地证书链文件`/var/www/ninerobot.com/public/mlb/certs/mlbtr-push-dev.pem' ;检查您的 cafile/capath 设置是否包含您的证书及其颁发者的详细信息”

你知道我该如何解决这个问题吗?

我在 Apple 的文档中看到“注意:要与 APN 建立 TLS session ,必须在提供商的服务器上安装 Entrust Secure CA 根证书。如果服务器运行的是 Mac OS X,则此根证书已经是在钥匙串(keychain)中。在其他系统上,该证书可能不可用。您可以从 Entrust SSL 证书网站下载此证书。”这是否意味着我需要做些什么?

最佳答案

我也需要付出更多的努力才能做到同样的事情。最终我找到了通过 PHP 全局 url 发送推送通知的解决方案。尝试以下步骤。在此之前,我希望大家知道生成 3 个证书,即 PushChat.certSigningRequest、pushkey.p12 和 aps_development.cer (csr,p12,cer)

打开终端并逐步运行以下命令:

# Make sure terminal refers your correct certificate path.
$ cd ~/Desktop/

# Ask system administrator to open if its not connected
$ telnet gateway.sandbox.push.apple.com 2195

Trying 17.110.227.35...
Connected to gateway.sandbox.push-apple.com.akadns.net.

Escape character is '^]'.

# Convert .cer to .pem
$ openssl x509 -in aps_development.cer -inform der -out PushCert.pem

# Convert .p12 to .pem. Enter your pass pharse which is the same pwd that you have given while creating the .p12 certificate. PEM pass phrase also same as .p12 cert.
$ openssl pkcs12 -nocerts -out PushKey1.pem -in pushkey.p12

Enter Import Password:

MAC verified OK

Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:

# To remove passpharse for the key to access globally. This only solved my stream_socket_client() & certificate capath warnings.
$ openssl rsa -in PushKey1.pem -out PushKey1_Rmv.pem

Enter pass phrase for PushChatKey1.pem:

writing RSA key

# To join the two .pem file into one file:
$ cat PushCert.pem PushKey1_Rmv.pem > ApnsDev.pem

然后最后将 SimplePush.php 移动到 ApnsDev.pem 文件位置。两个文件将位于同一文件夹中。并更改设备 token 、密码短语、证书名称(ApnsDev.pem)、消息... 在 simplepush.php 中使用以下 URL 下载文件。<强> http://d1xzuxjlafny7l.cloudfront.net/downloads/SimplePush.zip 然后在终端或域服务器中执行该文件

$ php simplepush.php

www.Domainname.com/push/simplepush.php  // Now, url shows 'Connected to APNS Message successfully delivered'.

就是这样,推送通知将飞行并到达特定的 IOS 设备。

如果您想发送“徽章”,请更改 simplepush.php 中的有效负载代码,如下所示,

// Construct the notification payload body:

$badge = 1;

$sound = 'default';

$body = array();

$body['aps'] = array('alert' => $message);

if ($badge)

$body['aps']['badge'] = $badge;

if ($sound)

$body['aps']['sound'] = $sound;


// End of Configurable

// Encode the payload as JSON:

$payload = json_encode($body);

现在再次运行 php 文件,应用程序图标将出现,徽章编号以红色圆圈显示。

关于iphone - 推送通知错误: "Unable to set local cert chain file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com