首先到苹果后台
1.创建好Distribution的.cer,下载后双击安装。
2.再去创建APNs的.cer,下载后双击安装。(否则下载的.cer无法导出为.p12)
3.打开钥匙串访问,左侧选择登录
右侧选证书
将安装好的APNs 证书 右键导出为.cer 到操作目录命名:aps.cer ,在次操作导出为.p12文件到操作目录命名:push.p12。
(导出时弹出的设置密码 直接回车 没有密码)。
打开终端,cd到操作目录
执行命令-> 生成证书的pem文件
openssl x509 -inform der -in aps.cer -out cer.pem
执行命令-> 生成证书的pem文件,这里会要求输入密码,直接回车2次
openssl pkcs12 -in push.p12 -out key.pem -nodes
执行命令-> 合成pem文件
cat cer.pem key.pem > ck.pem
执行命令-> 生成p12
openssl pkcs12 -export -in ck.pem -out pushbird.p12
最后将目录下的ck.pem 或者 pushbird.p12 发送给后台人员,完毕。
附:
服务器是用php实现的用pem文件。
服务器使用java/c#实现的用p12文件。
开发环境验证pem方法
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert ck.pem
正式环境验证pem方法
openssl s_client -connect gateway.push.apple.com:2195 -cert ck.pem
参考作者,致谢。
问题处理
最新报错
Error outputting keys and certificates
80FB8E5EF87F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:crypto/evp/evp_fetch.c:355:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()
在执行openssl pkcs12 -in push.p12 -out key.pem -nodes时,终端报错
问题解决
你的本地openssl版本太高,点击访达,前往文件夹
/usr/local/Cellar/