我正在为Production APNS创建PEM文件,我已经好几次了。
但是我在从下面的命令测试我的PEm文件时遇到终端错误:
$ openssl s_client -connect gateway.push.apple.com:2195
-cert myCert.pem -key myKey.pem
它给了我:
验证返回代码:20(无法获得本地颁发者证书)
作为回应。
我已经尝试了很多次,但没有发现问题。
可能是因为我在不同Mac上创建的分发证书。 但我不确定。 任何帮助建议都会有所帮助。
答案 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