.pem文件_如何将推送证书p12导出为pem

如何将推送证书p12导出为pem

pem和p12的区别

pem是一个证书请求,是的文本文件。

p12是一个个人证书,里面的包含私钥。

p12导出为pem

在Mac上启动Keychain助手,然后在login keychain中选择 Certificates分类。你将看到一个可展开的“Apple Development Push Services”证书。

选择该证书,右击“Apple Development Push Services” > Export “Apple Development Push Services: xxx”。保存为 apns-dev-cert.p12文件。

展开“Apple Development Push Services”会看到一个类别为“Private Key”的私钥,对该私钥做同样操作,保存为 apns-dev-key.p12 文件。

需要通过终端命令将这些文件转换为PEM格式:

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

如果你想要移除密码,要么在导出/转换时不要设定或者执行:

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

验证pem有效性(验证生产证书时将http://gateway.sandbox.push.apple.com替换为http://gateway.push.apple.com)

openssl s_client -connect http://gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

如果使用p12导出pem时发生类似以下的错误:asn1 encoding routines:ASN1_get_object:header too long,请通过Keychain导出成cer文件,再执行命令转为pem:

openssl x509 -in apns-dev-cert.cer -inform DER -out apns-dev-cert.pem -outform PEM

9a06435d97ccc687a869194a1c8e575d.png
全球可信CA机构