早期的极光推送和友盟推送也是需要上传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.ceraps.cer

然后,分别双击aps_development.ceraps.cer,这两个证书就被安装到钥匙串中了。

aps_development.ceraps.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证书流程相关推荐

  1. 设置Office 365移动设备管理MDM服务——创建APNs证书

    服务准备就绪后,完成所需的步骤完成安装程序. 您可能需要单击管理设置上设备管理页面以查看以下设置. 要管理 iPad 和 iPhone 之类 iOS 设备,必须创建 APNs 证书.

  2. IOS 生成pem证书方法

    具体步骤如下: 首先,需要一个pem的证书,该证书需要与开发时签名用的一致. 具体生成pem证书方法如下: 1. 登录到 iPhone Developer Connection Portal(http ...

  3. ios snapkit m_如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局

    ios snapkit m by Enabled Solutions 由Enabled Solutions 如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局 (How to create ...

  4. 苹果 iOS推送 APNS(本人亲测总结)

    文章目录 1.静默推送(发透传消息)总是收不到(iOS静默通知(iOS Silent Notification):需要进一步验证 2.推送的相关方法 3.模拟推送的工具 3.1 在appstore上搜 ...

  5. APNS部署教程2(证书配置)

    本系列教程写于2016年9月,所用开发环境是 XCODE(7.3.1), SWIFT(3.0), PHP(5.5.36), APACHE(2.4.18) 禁止转载! 如果在看这篇教程之前,如果没有看过 ...

  6. 转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名...

    转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 July 20, 20 ...

  7. iOS Sprite Kit教程之申请和下载证书

    iOS Sprite Kit教程之申请和下载证书 模拟器虽然可以实现真机上的一些功能,但是它是有局限的.例如,在模拟器上没有重力感应.相机机等.如果想要进行此方面的游戏的开发,进行程序测试时,模拟器显 ...

  8. Xamarin iOS教程之申请付费开发者账号下载证书

    Xamarin iOS教程之申请付费开发者账号下载证书 Xamarin iOS使用真机测试应用程序 在讲解iOS Simulator时,已经提到了虽然iOS Simulator可以模仿真实的设备,但是 ...

  9. IOS应用程序发布到苹果APP STORE完整流程使用教程

    参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...

最新文章

  1. No module named ‘sklearn.utils.linear_assignment_‘
  2. humanize时间库使用及汉化
  3. Excel 表单控件之 CheckBox 集合事件响应
  4. OneNote怎样显示或者隐藏网格线
  5. 程序员败给了一个厨子,读书无用论让我 必须送书了
  6. centos下查看调优apache状态的相关命令
  7. Mac 安装Pytorch, Jupyter notebook, conda, python3
  8. 【mfc】解决鼠标钩子被占用焦点后不响应的问题
  9. 02:Glove论文学习
  10. 自己做量化交易软件(38)小白量化实战11--双向高频马丁交易策略
  11. php类的开发语言,php是什么开发语言
  12. 工作人员必备的计算机知识,工作必备计算机技巧知识
  13. lzma java sdk,如何使用LZMA SDK在Java中压缩/解压缩
  14. 2021年起重机司机(限桥式起重机)最新解析及起重机司机(限桥式起重机)新版试题
  15. PyTorch的生态和模型部署
  16. 计算机原理实验红绿灯转换,微机原理与应用的5个实验 包含8086扩展,8255交通灯,DEBUG程序,数码显示...
  17. 完美洗牌算法简析与代码实现
  18. 浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))
  19. Windows下安装Boot Camp提示版本不适用
  20. 射频测试系统软件,通用射频自动测试系统解决方案

热门文章

  1. JavaScript - 移动端网页特效
  2. 桥接路由器总是掉线_无线路由器桥接完整教程(不会断网)【图文详解】
  3. 音频重采样ffmpeg(九)
  4. 【笔记】html 图片映射 usemap(vue环境下、map、area、coords)
  5. GCC详解-Binutils工具之strip
  6. Webview相关属性和事件处理
  7. 基于域控的SSO单点登录
  8. 拉普拉斯分布和拉普拉斯变换有什么区别
  9. Win10 22H2 19045.2670系统原版镜像
  10. 苹果或将微信下架系谣言,苹果微信牵手ios11