Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Safari推送通知证书问题_Php_Ssl_Safari - Fatal编程技术网

Php Safari推送通知证书问题

Php Safari推送通知证书问题,php,ssl,safari,Php,Ssl,Safari,我有一个网站,它使用safari浏览器的推送通知。直到最近我开始收到一条信息说 推送包的签名验证失败 我相信这与最近苹果WWDRCA证书过期有关,现在正试图将他们的新证书安装到系统中。他们的医生说 如果您使用openssl_pkcs7_sign函数仅使用web推送证书对推送包进行签名,则应为extra certificates参数传递更新的中间层的路径 所以我的问题是如何告诉这个函数使用这个新的证书,以及另一个证书,我是否应该将它们的证书安装到运行Apache的linux系统中。我不确定是否安装

我有一个网站,它使用safari浏览器的推送通知。直到最近我开始收到一条信息说

推送包的签名验证失败

我相信这与最近苹果WWDRCA证书过期有关,现在正试图将他们的新证书安装到系统中。他们的医生说

如果您使用openssl_pkcs7_sign函数仅使用web推送证书对推送包进行签名,则应为extra certificates参数传递更新的中间层的路径

所以我的问题是如何告诉这个函数使用这个新的证书,以及另一个证书,我是否应该将它们的证书安装到运行Apache的linux系统中。我不确定是否安装了以前的证书。 谢谢大家

谢谢大家

通过将Apple WWDRCA新证书作为openssl_pkcs7_签名的最后一个参数来解决此问题

openssl_pkcs7_sign("$package_dir/manifest.json", $signature_path, $cert_data, $private_key, array(), PKCS7_BINARY | PKCS7_DETACHED,"/path/to/certificate/AppleWWDRCA.pem");
不需要额外的工作。请注意,必须手动将文件从.cer转换为.pem


我认为应该在文档的某个地方更清楚地指出这一点。

如何将cer转换为pem?我使用keychain并失败。我使用以下命令:
openssl x509-在您的_cert.cer中-通知der-输出转换的_cert.pem
如@Jack Hello Jack中所述,我不断收到“推送包签名验证失败”错误。应用您的解决方案会导致“推送通知包中缺少文件”错误!!!你能帮帮我吗!您需要检查创建的包是否包含符合apple规范的所有文件。如果某个文件丢失,您需要找出原因。为此,您可以转储createpushpackage文件(规范的apple配套文件)中调用的每个函数的结果。您可以使用php函数文件\u put\u contents来实现这一点。如果我遇到一些错误,我会这样做。您在哪里看到错误消息“push package的签名验证失败”?我有一些相同的问题,但我不知道这些调试消息显示在哪里。它们不会显示在javascript控制台中