Apple MDM推送通知:使用哪个密钥和证书?

时间:2013-08-14 13:56:36

标签: ios mdm

我已经在这里待了大约12个小时。所有谷歌链接都是紫色的,与MDM有关。我发誓,重要的是我已经尝试了一切。我已经重新生成了供应商和客户的CSR,密钥等十几次,无法获得推送通知。

这就是我所做的:

  1. 创建供应商CSR,将私钥导出为vendor.p12
  2. 登录Apple Provisioning Portal并生成MDM CSR证书
  3. 下载该证书并将其命名为vendor.cer
  4. 运行此命令“openssl pkcs12 -in vendor.p12 -nocerts -out vendor.pem”
  5. 然后,我在Keychain Utility中创建了第二个CSR,名为customer.csr
  6. 我使用了这里的酷python脚本:https://github.com/grinich/mdmvendorsign
  7. 我运行了这个脚本的命令:“python mdm_vendor_sign.py --csr customer.csr --key vendor.key --mdm vendor.cer”
  8. 这会生成一个plist cert请求,然后我上传到https://identity.apple.com/pushcert/
  9. 我下载了证书并将其命名为client-push.pem
  10. 我尝试通过运行此命令来检查它是否有效: “openssl s_client -connect gateway.sandbox.push.apple.com:2195-cert push.pem -key vendor.pem”。这给了我错误“错误设置私钥 67028:错误:0B080074:x509证书例程:X509_check_private_key:键值不匹配:/ SourceCache/OpenSSL098/OpenSSL098-47.1/src/crypto/x509/x509_cmp.c:406:“

  11. 所以我的问题是:我使用什么密钥和证书组合来发送推送通知?因为我永远不会拥有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设置是否包含证书及其颁发者的详细信息

0 个答案:

没有答案