iOS推送证书转p12文件

为了实现iOS推送,需要给服务器制作p12文件。

我们就从证书下载安装到本地开始,进行描述。

  1. 下载cer文件aps.cer,安装到本地

  2. 导出p12文件push.p12,不要点开导出。
    正常情况下使用这个p12就可以了,但是如果有特殊需求,就可以看下面的步骤了。

  3. 生成证书的pem文件
    openssl x509 -inform der -in aps_development.cer -out cer.pem

  4. 生成证书的pem文件,这里会要求输入密码,就是导出时设置的密码
    openssl pkcs12 -nocerts -out key.pem -in push.p12

  5. 合成pem
    cat cer.pem key.pem > ck.pem

  6. 生成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

你可能感兴趣的:(iOS推送证书转p12文件)