iOS推送证书生成pem文件(详细步骤)
1、pem文件概述
pem文件是服务器向苹果服务器做推送时候需要的文件,主要是给php向苹果服务器验证时使用,(我用在百度推送的时候)下面介绍一下pem文件的生成。
2、生成pem文件步骤
1、打开钥匙串,选择需要生成的推送证书(不需要把证书下拉展开)
2、将Certificate和Private key导出得到 .p12 文件
2.1、生成证书apns_dev_cert.p12的p12文件,按照下面操作导出p12,桌面对应生成apps_dev_cer.p12文件
2.2、生成证书对应的秘钥apns_dev_key.p12的p12文件,按照下面操作导出p12,桌面对应生成apps_dev_ker.p12文件。
3、将apns_dev_cert.p12和apns_dev_key.p12文件对应转化为apns_dev_cer.pem和apns_dev_key.pem文件
3.1、打开终端,输入cd Desktop
3.2、将apns_dev_cert.p12文件转换为pen格式,输入openssl pkcs12 -clcerts -nokeys -out apns_dev_cert.pem -in apns_dev_cert.p12
1>. 要求输入一个密码,输入123456.(此处为导出p12的保护密码),此时桌面会生成一个apns_dev_cert.pem文件
3.3、将apns_dev_key.p12文件转换为pen格式,输入openssl pkcs12 -nocerts -out apns_dev_key.pem -in apns_dev_key.p12
1>. 要求输入一个密码,输入123456.(此处为导出p12的保护密码)
2>. 要求验证保护密码,再一次输入123456,此时桌面会生成一个apns-dev-key.pem文件
4、将apns_dev_cer.pem和apns_dev_key.pem文件合成为apns_dev.pem文件,此文件将给php后台用于连接苹果服务器时需要使用,在终端继续输入:cat apns_dev_cer.pem apns_dev_key.pem > apns_dev.pem,此时桌面生成一个apns_dev.pem
我本人用这种方式的时候开始是出问题了一直提示验证失败,后来才知道是因为最终发现是我Mac系统版本(刚从10.12.6升到10.13)太高了,因为10.12.6的openssl版本是0.9.8zh,而10.13的系统openssl的版本是2.x.x,具体多少记不住了,公司电脑升级了,家里的还没升,百度推送不接受高于0.9.8的openssl生成的pem。
1、到https://www.openssl.org/source/old/0.9.x/ 下载openssl 0.9.8zh版本
2、解压下载的压缩包
3、cd 你解压后的压缩包目录
4、执行命令
./Configure darwin64-x86_64-cc --prefix=/usr/local/openssl --shared这一步可能会遇到没有权限创建openssl文件夹的问题,可以手动到/usr/local/下创建一个openssl文件夹,然后在执行命令
5、执行命令
make &;&; make install6、openssl将会出现在这个路径下:/usr/local/openssl/bin/openssl,命令行查看下版本:
/usr/local/openssl/bin/openssl version显示0.9.8zh,成功!!!
7、生成pem:
/usr/local/openssl/bin/openssl pkcs12 -in 你的p12名字.p12 -out 输出的pem名字.pem -nodes8、丢给百度推送吧
最后为方便使用,我已经将生成好的0.9.8zh版openssl上传,可以直接下载使用:openssl.zip
参考文章:http://www.cnblogs.com/gauze/p/5483703.html
3、验证生成的pem文件
在终端测试:openssl s_client -connectgateway.sandbox.push.apple.com:2195-cert apns_dev_cert.pem -key apns_dev_key.pem
终端最后显示以下内容,表示配置pem文件成功,
.............................
Key-Arg : None
Start Time: 1467854873
Timeout : 300 (sec)
Verify return code: 0 (ok)
如果上面这种方式不行,可以直接采用下面这种方式(我是用下面的这个方式上传百度推送证书验证成功的)
打开终端,输入cd Desktop回车
openssl pkcs12 -in aps_developer_identity.p12 -out MyApnsCert.pem -nodes这个命令。aps_developer_identity.p12 是你导出的p12证书名字,MyApnsCert.pem是你需要生成的pem文件名字。