答:
从【钥匙串访问中】导出 p.12 时,需要选择证书本身,然后导出 p12 文件,如果选择了私钥导出,那么无法连接 APNs。可通过与 APNs 连接进行测试来验证。
生成 pem 证书后,可使用如下命令进行开发环境下的测试:
openssl s_client gateway.sanbox.push.apple.com:2195 -cert MyApnsDev.pem
使用以下命令进行生产环境下的测试:
openssl s_client gateway.push.apple.com:2195 -cert MyApnsPro.pem
可以看出,每个证书都有自己对应的服务器地址。
当与 APNs 的测试性连接开始建立时,终端会输出很多调试性信息,当连接建立失败时,会直接 close 掉。当连接建立成功时,终端会停止输出,并等待你输入,你可以随便输入一些字符后摁回车,然后连接才会关闭。
以上命令在 Mac 下没有问题,在其他操作系统下需要指定服务器当前的 CA 根证书,具体可以从网站上下载:
entrust2048ca.cer 下载(https://www.entrust.net/downloads/binary/entrust_2048_ca.cer](https://www.entrust.net/downloads/binary/entrust_2048_ca.cer)
下载完成之后,在以上命令后面加上 -CAfile entrust2048ca.cer 即可