APNS推送证书生成与验证
2016-04-13 13:57
211 查看
要进行推送服务的第一件事就是获取推送证书。它用来对你通过SSL与APNS通讯进行识别。
[b]一、在Mac上生成 Apple推送通知SSL证书:[/b]
1.1.登录到 iPhone Developer Connection Portal 并点击 App IDs
1.2.创建一个不使用通配符的 App ID 。通配符 ID 不能用于推送通知服务。例如,我们的iPhone程序ID像这样: AB123346CD.com.serverdensity.iphone
1.3.点击App ID旁的“Configure”,然后按下按钮生产 推送通知许可证。根据“向导”指导的步骤生成一个签名并上传,最后下载生成的许可证。此步骤在 Apple文档中 也有谈到。
1.4.通过双击.cer文件将你的 aps_developer_identity.cer 引入Keychain中。
1.5.在Mac上启动 Keychain助手,然后在login keychain中选择 Certificates分类。你将看到一个可扩展选项“Apple Development Push Services”
1.6.扩展此选项然后右击“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存为 apns-dev-cert.p12 文件。
1.7.扩展“Apple Development Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。
1.8.需要通过终端命令将这些文件转换为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
1.9.如果你想要移除密码,要么在导出/转换时不要设定或者执行:
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
1.10.a 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
1.10.b java需要使用:
openssl pkcs12 -export -in apns-dev.pem -inkey apns-dev-key.pem -certfile CertificateSigningRequest.certSigningRequest -name“aps_developer_identity” -out aps_developer_identity.p12
[b]二、使用APNS 搭建苹果推送服务器错误:unable to connect to ssl://gateway.sandbox.push.apple.com:2195 错误[/b]
2.1:检查你的服务器的端口 2195是否已经开启,是否被关闭了或是防火墙阻止了!这点很重要;如果你不确定,又出现了错误,请先向你的服务器商询问一下,并开启;
2.2:确认你的证书没有问题:
在mac下执行以下命令:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem -debug -showcerts -CAfile “apns-dev.pem”
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem -debug -showcerts -CAfile “apns-dev.pem”
在上面进程执行完之后;可以随便输入一些字符串,如果关闭了,这时是正常的!如果没有关闭,会有错误信息打印;说明证书有问题;
证书生成:https://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/
2.3:检查你的 推送程序是否有问题; 在这里推荐几个我测试成功的 php推送程序;
APNS-Pusher
ApnsPHP
easyapns
2.4:检查你的服务器与推送程序的环境配置是否相匹配;比如我的服务器使用Apache ,程序用php 那么 就要确认服务器 支持php 的 socket连接 openSSL模块;
[b]三、证书过期处理:(不需要升级客户端)[/b]
证书过期处理:push证书过期,不需要升级客户端。 具体步骤要点:
3.1. 删除老的push 的certificate。(一定要把老的证书删掉)
3.2. 在Identifiers -> App Ids 下创建新的push certificate。
测试创建:Development SSL Certificate
正式创建:Production SSL Certificate
3.3. 创建完成后,下载certificate,双击安装。
3.4. 把证书导出,上传到自己的apns服务器上。
[b]一、在Mac上生成 Apple推送通知SSL证书:[/b]
1.1.登录到 iPhone Developer Connection Portal 并点击 App IDs
1.2.创建一个不使用通配符的 App ID 。通配符 ID 不能用于推送通知服务。例如,我们的iPhone程序ID像这样: AB123346CD.com.serverdensity.iphone
1.3.点击App ID旁的“Configure”,然后按下按钮生产 推送通知许可证。根据“向导”指导的步骤生成一个签名并上传,最后下载生成的许可证。此步骤在 Apple文档中 也有谈到。
1.4.通过双击.cer文件将你的 aps_developer_identity.cer 引入Keychain中。
1.5.在Mac上启动 Keychain助手,然后在login keychain中选择 Certificates分类。你将看到一个可扩展选项“Apple Development Push Services”
1.6.扩展此选项然后右击“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存为 apns-dev-cert.p12 文件。
1.7.扩展“Apple Development Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。
1.8.需要通过终端命令将这些文件转换为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
1.9.如果你想要移除密码,要么在导出/转换时不要设定或者执行:
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
1.10.a 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
1.10.b java需要使用:
openssl pkcs12 -export -in apns-dev.pem -inkey apns-dev-key.pem -certfile CertificateSigningRequest.certSigningRequest -name“aps_developer_identity” -out aps_developer_identity.p12
[b]二、使用APNS 搭建苹果推送服务器错误:unable to connect to ssl://gateway.sandbox.push.apple.com:2195 错误[/b]
2.1:检查你的服务器的端口 2195是否已经开启,是否被关闭了或是防火墙阻止了!这点很重要;如果你不确定,又出现了错误,请先向你的服务器商询问一下,并开启;
2.2:确认你的证书没有问题:
在mac下执行以下命令:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem -debug -showcerts -CAfile “apns-dev.pem”
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem -debug -showcerts -CAfile “apns-dev.pem”
在上面进程执行完之后;可以随便输入一些字符串,如果关闭了,这时是正常的!如果没有关闭,会有错误信息打印;说明证书有问题;
证书生成:https://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/
2.3:检查你的 推送程序是否有问题; 在这里推荐几个我测试成功的 php推送程序;
APNS-Pusher
ApnsPHP
easyapns
2.4:检查你的服务器与推送程序的环境配置是否相匹配;比如我的服务器使用Apache ,程序用php 那么 就要确认服务器 支持php 的 socket连接 openSSL模块;
[b]三、证书过期处理:(不需要升级客户端)[/b]
证书过期处理:push证书过期,不需要升级客户端。 具体步骤要点:
3.1. 删除老的push 的certificate。(一定要把老的证书删掉)
3.2. 在Identifiers -> App Ids 下创建新的push certificate。
测试创建:Development SSL Certificate
正式创建:Production SSL Certificate
3.3. 创建完成后,下载certificate,双击安装。
3.4. 把证书导出,上传到自己的apns服务器上。
相关文章推荐
- 如何用SSH密钥远程登录腾讯云linux服务器
- 程序员双屏、多屏重要性!怎么设置?
- B+/-Tree原理及mysql的索引分析
- 光标所在位置插入一串字符,并在特定位置设置光标锁定位置
- mamp装swoole扩展
- 谷歌推出最新图像识别工具Google Cloud Vision API
- DevExpress控件学习总结2(转)
- [Java] 过滤流BufferedInputStream和BufferedOutputStream
- Remove Duplicates from Sorted Array
- Ceph浅析
- POJ 2299(树状数组,离散化)
- 剑指offer系列之55:删除链表汇总重复的节点
- Android天气预报程序(一)
- mysql-python安装的各种坑
- I2C总线
- Python学习笔记——Unicode
- org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.XXX.util.spri
- Node.js包(JXcore)
- iOS属性文字NSAttributedString
- JS 获取中英字符串字节长度