iOS 应用创建APNS 和 VOIP的pem证书流程
早期的极光推送和友盟推送也是需要上传pem文件的,不过可能对接入SDK的开发者来说,要用一堆的命令生成pem文件还是有些太麻烦了,所以现在都改成了上传p12文件,输入密码的形式,这样极大的简化了开发人员使用SDK的流程。
因为服务器端是自己实现的APNS和VOIP,所以每次给客户部署服务器后,对应的App都需要生成新的pem证书给服务器端,这里记录下创建pem文件的流程。
1.创建CertificateSigningRequest.certSigningRequest证书
打开Mac中的钥匙串应用,【证书助理】–> 【从证书颁发机构请求证书…】。
接下来,填入【邮箱】,选择保存到【磁盘】即可。
这样,CertificateSigningRequest.certSigningRequest
文件就创建好了。
2.创建APNS用的cer证书
在开发者中心创建好应用的appId(也就是应用的bundleId)后,就可以创建apns证书了。
这里要分别创建Development和Production证书,需要选择先选择对应的appId,然后上传上一步中的CertificateSigningRequest.certSigningRequest
文件即可。
创建完成后,分别下载APNS的Development和Production证书,下载后的默认名称是aps_development.cer
和aps.cer
。
然后,分别双击aps_development.cer
和aps.cer
,这两个证书就被安装到钥匙串中了。
aps_development.cer
和aps.cer
证书,先不要删除,后面测试推送会用到。
3.生成服务器推送用的pem文件
3.1 导出p12文件
先将证书从钥匙串中导出p12文件。
如果最终开发证书和发布证书都要生成pem文件的话,那么开发证书和对应的key,以及发布证书和对应的key都要分别导出成p12文件。
我这里拿production证书举例,先导出证书(注意这里是选中证书):
导出的时候要设置密码,这里一般都随便设置一个(我这里设置的是123)。
然后,再导出key:
导出的时候要设置密码(我这里设置的是123)。
3.2 生成pem文件
可以先将导出的两个p12文件,放到一个文件夹下。然后,终端 中cd 到该目录下。
3.2.1 创建cert的pem文件
命令的格式如下:
openssl pkcs12 -clcerts -nokeys -out 证书.pem -in 证书.p12
这里的证书
就是导出来的证书的名称。
示例命令:
openssl pkcs12 -clcerts -nokeys -out apns_amac_cert.pem -in apns_amac_cert.p12
执行完后,会要求输入密码,输入(导出p12证书时的密码,我这里是123)密码回车即可。
创建成功的话,命令行会有如下返回:
MAC verified OK
3.2.2 创建key的pem文件
命令的格式如下:
openssl pkcs12 -nocerts -out 私钥.pem -in 私钥.p12
这里的私钥
就是导出的p12 key的名称。
我这里执行的命令:
openssl pkcs12 -nocerts -out apns_amac_key.pem -in apns_amac_key.p12
执行完后,会要求输入密码,输入(导出p12证书时的密码,我这里是123)密码回车。
创建成功的话,命令行会有如下返回:
MAC verified OK
接下来,还要再输入两次密码,这两次是为key 生成的pem 设置密码,且密码要保持一致。
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
注意:这两次是为key的pem文件设置保护密码,且保护密码必须是4位以上。
为key创建不需要密码的pem
服务端做推送时,无法输入密码,所以一般都是创建不需要密码的pem。
执行如下命令,可以为key生成一个去除密码的pem。
openssl rsa -in apns_amac_key.pem -out apns_amac_key_nopwd.pem
执行完上述命令时,依然需要输入密码,这里输入的就是上面key.pem的密码。
完成时,命令行会返回如下信息:
writing RSA key
3.2.3 合成服务器用的pem
执行命令将证书的pem 和key的pem合成到一起:
命令的格式如下:
cat 证书.pem 私钥.pem > 合成.pem
这里我执行的命令如下:
cat apns_amac_cert.pem apns_amac_key_nopwd.pem > apns_amac.pem
当然,如果想要创建的是带密码的pem,则使用带密码的key.pem即可。
比如:
cat apns_amac_cert.pem apns_amac_key.pem > apns_amac.pem
我们将合成后的pem给服务器端即可。
3.3 验证pem文件
可以使用如下命令来验证pem文件是否正确:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns_amac_cert.pem -key apns_amac_key.pem
如果服务器端返回如下信息,表明pem有效:
SSL-Session:Protocol : TLSv1.2Cipher : DES-CBC3-SHASession-ID: Session-ID-ctx: Master-Key: AF11044D4BEDCD4D75C36229C88A5475620326F661813FC56D11C62E08CDD43ABD681CC48AF16E04A5D252E9D4EC3869Start Time: 1554188821Timeout : 300 (sec)Verify return code: 0 (ok
注意:其实苹果的APNS推送服务器有两个地址,
gateway.sandbox.push.apple.com:2195
是测试环境服务器;gateway.push.apple.com:2195
是生产环境服务器。不管用哪一个服务器都可以测试pem证书。
3.4 验证pem文件
如果想要自己在本地,给手机发送APNS推送等消息,测试cer证书是否正确的话,可以使用这个工具:
SmartPush(同事在原工具的基础上做了一些修改),原始的工具是GitHub这里:https://github.com/shaojiankui/SmartPush。
将证书(上面步骤2中下载的cer证书)和token设置好后,先【连接服务器】,再【推送】。
iOS 应用创建APNS 和 VOIP的pem证书流程相关推荐
- 设置Office 365移动设备管理MDM服务——创建APNs证书
服务准备就绪后,完成所需的步骤完成安装程序. 您可能需要单击管理设置上设备管理页面以查看以下设置. 要管理 iPad 和 iPhone 之类 iOS 设备,必须创建 APNs 证书.
- IOS 生成pem证书方法
具体步骤如下: 首先,需要一个pem的证书,该证书需要与开发时签名用的一致. 具体生成pem证书方法如下: 1. 登录到 iPhone Developer Connection Portal(http ...
- ios snapkit m_如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局
ios snapkit m by Enabled Solutions 由Enabled Solutions 如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局 (How to create ...
- 苹果 iOS推送 APNS(本人亲测总结)
文章目录 1.静默推送(发透传消息)总是收不到(iOS静默通知(iOS Silent Notification):需要进一步验证 2.推送的相关方法 3.模拟推送的工具 3.1 在appstore上搜 ...
- APNS部署教程2(证书配置)
本系列教程写于2016年9月,所用开发环境是 XCODE(7.3.1), SWIFT(3.0), PHP(5.5.36), APACHE(2.4.18) 禁止转载! 如果在看这篇教程之前,如果没有看过 ...
- 转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名...
转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 July 20, 20 ...
- iOS Sprite Kit教程之申请和下载证书
iOS Sprite Kit教程之申请和下载证书 模拟器虽然可以实现真机上的一些功能,但是它是有局限的.例如,在模拟器上没有重力感应.相机机等.如果想要进行此方面的游戏的开发,进行程序测试时,模拟器显 ...
- Xamarin iOS教程之申请付费开发者账号下载证书
Xamarin iOS教程之申请付费开发者账号下载证书 Xamarin iOS使用真机测试应用程序 在讲解iOS Simulator时,已经提到了虽然iOS Simulator可以模仿真实的设备,但是 ...
- IOS应用程序发布到苹果APP STORE完整流程使用教程
参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...
最新文章
- No module named ‘sklearn.utils.linear_assignment_‘
- humanize时间库使用及汉化
- Excel 表单控件之 CheckBox 集合事件响应
- OneNote怎样显示或者隐藏网格线
- 程序员败给了一个厨子,读书无用论让我 必须送书了
- centos下查看调优apache状态的相关命令
- Mac 安装Pytorch, Jupyter notebook, conda, python3
- 【mfc】解决鼠标钩子被占用焦点后不响应的问题
- 02:Glove论文学习
- 自己做量化交易软件(38)小白量化实战11--双向高频马丁交易策略
- php类的开发语言,php是什么开发语言
- 工作人员必备的计算机知识,工作必备计算机技巧知识
- lzma java sdk,如何使用LZMA SDK在Java中压缩/解压缩
- 2021年起重机司机(限桥式起重机)最新解析及起重机司机(限桥式起重机)新版试题
- PyTorch的生态和模型部署
- 计算机原理实验红绿灯转换,微机原理与应用的5个实验 包含8086扩展,8255交通灯,DEBUG程序,数码显示...
- 完美洗牌算法简析与代码实现
- 浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))
- Windows下安装Boot Camp提示版本不适用
- 射频测试系统软件,通用射频自动测试系统解决方案