验证返回代码:20(无法获取本地颁发者证书),同时创建推送通知P EM文件

时间:2015-08-21 10:43:10

标签: ios ssl terminal push-notification certificate

我正在为Production APNS创建PEM文件,我已经好几次了。

但是我在从下面的命令测试我的PEm文件时遇到终端错误:

$ openssl s_client -connect gateway.push.apple.com:2195 
    -cert myCert.pem -key myKey.pem

它给了我:

  

验证返回代码:20(无法获得本地颁发者证书)

作为回应。

我已经尝试了很多次,但没有发现问题。

可能是因为我在不同Mac上创建的分发证书。 但我不确定。 任何帮助建议都会有所帮助。

2 个答案:

答案 0 :(得分:1)

您需要将{em> CA证书作为CAfile命令行参数提供给s_client。推送服务器的受信任根证书是Entrust CA(2048)根证书,您可以从Entrust's site下载该证书。

$ openssl s_client -connect gateway.push.apple.com:2195 
    -cert myCert.pem -key myKey.pem -CAfile entrust_2048_ca.cer

有关更多信息和其他可能原因,请查看Apple开发人员指南Troubleshooting Push Notifications

答案 1 :(得分:1)

开发人员链接要求包括-CAfile server-ca-cert.pem,它也可以工作。 指示CAfile的所有其他选项都给了我错误,例如“无法加载证书”。

在尝试其他选项后,下面实际上对我有用。

openssl s_client -connect gateway.push.apple.com:2195 
-cert myCert.pem -key myKey.pem -CAfile entrust_2048_ca.cer

此解决方案提供'验证返回代码:0(确定)'。

另外需要注意:您还可以将.key文件指定为-key值&它也会起作用,例如ref here

openssl s_client -connect gateway.push.apple.com:2195 -cert myCert.pem -key myprivatekey.key -CAfile entrust_2048_ca.cer