转载自:http://blog.sina.com.cn/s/blog_6afb7d800101fa29.html
最近要做需要苹果推送通知的项目,就研究了一下推送证书的使用,大略步骤如下:
1.授权文件.certSigningRequest的生成(后面生成证书时需要。)
填完信息后 会在选择的位置生成文件:CertificateSigningReques
2.证书的生成。(登陆:https://developer.apple.com/account/overview.action)
- 创建一个允许发送通知的App ID ,允许通知的的App ID 只能选择Explicit App ID(通知必须要单一的id)。
- 分别创建Development Certificate和Production Certificate ,都要选择Apple Push Notification service SSL 功能选项。
- 接下来按照常规步骤创建对应的Development Provisioning Profile(一个新的不含 notification的Development
Certificate)和 Distribution Provisioning Profile(一个新的不含notification的Distribution Certificate),创建时 都要选择第一步创建的包含通知功能的App ID,并下载安装。
至此证书生成完毕。
(
iOS证书分2种,1种是开发证书,用来给你(开发人员)做真机测试的;1种是发布证书,发布证书又分发布到app store的和发布测试的ad hoc证书。
所以要测试发布环境的推送 需要用ac hoc证书测试,在创建证书的时候,需要再见一个ad hoc的证书。)
PEM文件生成
pem文件是服务器向苹果服务器做推送时候需要的文件,主要是做服务器的小伙伴们要用,下面介绍一下pem文件的生成。
- 打开Keychain Access,在Certificates里面找到上篇文章中介绍的包含推送的证书。分别将certificate和private key导出得到.p12文件。例如:Apple Development Push Services > Export “Apple Development Push Services ID123”,保存为 apns-dev-cert.p12。对“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
此处要求输入一个密码,输入123456.
- 移除密码(上面的123456)
openssl rsa -in apns-dev-key.pem -out apns-dev-key.pem
- 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
同样 Distribution Certificate 的pem文件生成方式一样。
openssl pkcs12 -clcerts -nokeys -out apns-dis-cert.pem -in apns-dis-cert.p12
openssl pkcs12 -nocerts -out apns-dis-key.pem -in apns-dis-key.p12
openssl pkcs12 -nocerts -out apns-dis-key.pem -in apns-dis-key.p12
openssl rsa -in apns-dis-key.pem -out apns-dis-key.pem
cat apns-dis-cert.pem apns-dis-key.pem > apns-dis.pem