今天在完成ios推送过程中遇到一些问题,同事帮我注册了一个苹果的证书,然后用证书生成相应的pem文件,网上关于生成pem文件有很多方式
(1)php
|
3.找到需要测试的app id,然后enable它在development下的Apple Push Notification service: Development Push SSL Certificate。需要输入1)中的签名证书才可以生成一个aps_developer_identity.cer.
4.双击aps_developer_identity.cer,会打开系统的key chain. 在My certificates下找到Apple Development Push Services。需要为certificate和它之下的private key各自export出一个.p12文件。(会出现设置密码过程)
5.需要将上面的2个.p12文件转成.pem格式:
复制代码 openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12 |
openssl pkcs12 -nocerts -out key.pem -in key.p12
6.如果需要对key不进行加密:
复制代码 openssl rsa -in key.pem -out key.unencrypted.pem |
7.然后就可以合并两个.pem文件, 这个ck.pem就是服务端需要的证书了。
复制代码 cat cert.pem key.unencrypted.pem > ck.pem |
(2)go
在php用openssl生成cert.pem和key.pem过程中,分别用cert.p12和key.p12文件,同事给我的只有aps_development.cer和push_dev.p12
下面用aps_development.cer生成cert.pem文件
命令:
openssl x509 -in aps_development.cer -inform der -out cert.pem
-passin pass:P12_PASS (P12_PASS为生成p12文件时的密码)
生成加密的key.pem文件
openssl pkcs12 -nocerts -out key.pem -in
push_dev.p12 -passin pass:P12_PASS -passout pass:TMP_PASS(TMP_PASS为自己设定的临时密码用于生成不加密的key.pem文件)
生成不加密的key.pem文件
openssl
rsa -in key.pem -out unencryptkey.pem -passin pass:TMP_PASS(为刚才设定的临时密码,必须大于等于4个字符)
到这里所需的cert.pem文件和unencryptkey.pem
文件就生成了。
go语言提供的tls库中的LoadX509KeyPair并没有传入密码的选项,所以要生成unencryptkey.pem
的文件,自己可以下载windows下openssl工具,然后用证书自己生成。
有疑问加站长微信联系(非本文作者)