我已经在这里待了大约12个小时。所有谷歌链接都是紫色的,与MDM有关。我发誓,重要的是我已经尝试了一切。我已经重新生成了供应商和客户的CSR,密钥等十几次,无法获得推送通知。
这就是我所做的:
所以我的问题是:我使用什么密钥和证书组合来发送推送通知?因为我永远不会拥有CUSTOMER的私钥,所以我会使用VENDOR密钥和CUSTOMER的证书是有道理的,但这是错的吗?
当我使用客户的KEY和CERT时,看起来它可以通过打印一大堆东西而起作用,但在最顶层它显示“验证错误:num = 20:无法获得本地颁发者证书”。此外,我如何获得客户的私钥?
最后要尝试的是供应商的证书和密钥,它似乎与使用客户的密钥和证书完全相同。
哪种组合是正确的方法?
另外,我是否需要做任何事情才能将“数据”推送令牌转换为常规推送令牌?它说它是base64编码的。我需要解码吗?
更新
我已经读过令牌是一个32字节的base64编码字符串。我正在使用PHP发送推送通知os我认为bin2hext(base64_decode(Token))将起作用。当我这样做时,它看起来是合法的。没有推送通知。
我还尝试了所有可能的组合,并且我在同一个PEM文件中同时使用供应商密钥和证书时,我唯一一次可以发送通知而没有任何错误。消息仍然永远不会到来。我也尝试过(并成功生成)来自identity.apple.com/pushcert的PEM证书文件很多次。它说它在那个页面上工作。
我正在为Laravel框架使用Push库。它要求的是证书文件,推送服务器主机和pem密码。
当我尝试使用从identity.apple.com/pushcert生成的pem文件时出现此错误:
stream_socket_client():无法设置本地证书链文件`/Users/neb/Dev/www/cgmdm/trunk/app/certificates/MDM.p12';检查您的cafile / capath设置是否包含证书及其颁发者的详细信息