为了实现iOS
推送,需要给服务器制作p12
文件。
我们就从证书下载安装到本地开始,进行描述。
下载
cer
文件aps.cer
,安装到本地导出
p12
文件push.p12
,不要点开导出。
正常情况下使用这个p12
就可以了,但是如果有特殊需求,就可以看下面的步骤了。生成证书的
pem
文件
openssl x509 -inform der -in aps_development.cer -out cer.pem
生成证书的
pem
文件,这里会要求输入密码,就是导出时设置的密码
openssl pkcs12 -nocerts -out key.pem -in push.p12
合成
pem
cat cer.pem key.pem > ck.pem
生成p12
openssl pkcs12 -export -in ck.pem -out pushbird.p12
生成成功了,就可以了。
但我执行的时候出现了一个问题:
unable to load private key
4497311340:error:09FFF06C:PEM routines:CRYPTO_internal:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/pem/pem_lib.c:683:Expecting: ANY PRIVATE KEY
解决方法: 再重新生成一下pem
openssl pkcs12 -in push.p12 -out key.pem -nodes
之后再执行5、6就可以了。成功后会要求输入两次密码。
附:
服务器是用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