iOS 推送证书生成pem

需求:配置推送,PHP后台需要pem证书

1.先打开钥匙串访问,通过菜单栏里的证书助手请求证书生成.certSigningRequest 文件

2.通过登录开发者网站在APPID里面的PUSH配置下下载生产推送证书和开发推送证书

3.双击运行在钥匙串中找到两个证书分别导出.p12文件,同时分别导出展开的证书下面的那个秘钥(一般电脑的用户名)也生成.p12文件

这样就得到了4个文件
1.生产证书 xx_cer_push.p12 (证书用cer表示)  、 xx_key_push.p12(秘钥用key表示)
2.生产证书 xx_cer_sadboxpush.p12 (证书用cer表示)  、 xx_key_sadboxpush.p12(秘钥用key表示)

4.转换证书格式这里只以开发证书为例子,步骤都一样的

1.先把证书转换
openssl pkcs12 -clcerts -nokeys -out dev_cert.pem -in xx_cer_push.p12
2.再转换秘钥
openssl pkcs12 -nocerts -out dev_key.pem -in xx_key_push.p12
3.合成证书
cat xx_cer_push.pem xx_key_push.pem > XXXX.pem

5.验证证书是否成功 ,展示效果和下面一样的话代表成功(我开始开了抓包,有代理,一直显示报错(Enter pass phrase for dev_key.pem: connect: Connection refused connect:errno=61),关掉就行了)

开发证书终端输入:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert dev_cert.pem -key dev_key.pem
生产证书终端输入:
openssl s_client -connect gateway.push.apple.com:2195 -cert pro_cert.pem -key pro_key.pem

 成功的效果:
······
New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : DES-CBC3-SHA
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 04CB88604F587B59660EB6A0F7BAF90BA98649D72ACDA1BDA79166A02EC673E385931436EED9AE57B136B1A56BF6CEE5
    Start Time: 1650978377
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---
closed

6.测试是否可以链接到APNS服务器

输入命令:telnet gateway.sandbox.push.apple.com 2195

显示结果如下,表示可以连接上:
john.lee@localhost Desktop % telnet gateway.sandbox.push.apple.com 2195
Trying 17.188.143.190...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.
Connection closed by foreign host.

总结:生产证书的步骤也是一样的,只不过测试结果的终端方法不一样,注意名称不要搞错了,密码的话我全部设置123456,你们记得住可以自由设置,需要注意的是秘钥第二次、三次输入的密码需要记住给服务器。

你可能感兴趣的:(iOS 推送证书生成pem)