CODE & ZEN

凯旋的博客

我是孙凯旋 @skx926
一名来自中国的 iOS 开发者
写过 Android
也会点 Web
深知付出更多才能收获更多
唯有在技术的道路上勤勤恳恳
方得片刻安心


制作服务端推送时使用的.pem证书

服务端要给移动端发送推送消息就需要用到推送证书,但是服务端通常需要的证书 .pem 格式的,并不是我们从Apple的开发者中心下载到的 .cer 格式的文件,所以我们需要对其做一个转换。

申请推送证书的过程我就不赘述了,这里假设你已经申请好了开发环境和生产环境的推送证书并下载导入到 Mac 钥匙串当中。

下面我们开始转换,这里我以开发环境为例,生产环境同理:

  1. 从钥匙串中分别导出 Apple Development iOS Push Serives 证书和私钥为 cer.p12key.p12(导出的时候会提示输入密码,可以随便设置一个)

  2. 使用 openssl 将 cer.p12key.p12 转换为 cer.pemkey.pem

    $ openssl pkcs12 -clcerts -nokeys -out cer.pem -in cer.p12
    $ openssl pkcs12 -nocerts -out key.pem -in key.p12

    转换的时候会提示输入刚才导出的时候设置的密码。转换私钥的时候还会要求你输入一个新的密码,设置的这个新的密码在服务端连接 APNS 服务器时需要使用。

  3. 测试生成的文件是否可用:

    // 生产环境请使用 gateway.push.apple.com:2195
    $ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cer.pem -key key.pem

    上面的命令执行之后会有一大堆的信息输出,我们查看最底部的信息:

    SSL-Session:
    Protocol : TLSv1
    Cipher : AES256-SHA
    Session-ID:
    Session-ID-ctx:
    Master-Key: 13BFA2DC5D6550B06BB351A0A16AC1F9CFE343EEC02F71C45F1F451613D689ED507B4445160C10589ECEFEDD6EBF60CD
    Key-Arg : None
    Start Time: 1496308341
    Timeout : 300 (sec)
    Verify return code: 0 (ok)
    ---

    最后一行输出为 Verify return code: 0 (ok) 即为测试通过。

  4. 合并证书和私钥。服务端在使用时只需要一个文件,所以我们需要将 cer.pemkey.pem 合并成一个 ck.pem 文件:

    $ cat cer.pem key.pem > ck.pem

最近的文章

获取App Store下载的Xcode安装包

通过 App Store 下载安装 Xcode 的时候可能会遇到各种奇葩的事情。 这不,我刚才就摊上事了:用公司的渣网络辛辛苦苦下载两个多小时眼看开始安装了结果弹框提示我说空间不足无法继续安装。既然空间不足咱就清理一下呗,清理完了之后想要继续安装发现没有办法重新开始安装,App Store 里的按钮 …

于  Mac技巧 继续阅读
更早的文章

嵌套UIScrollView滑动手势冲突的解决

问题 最近有有朋友在Github上提出issue说 KSPhotoBrowser 在图片长度超出屏幕大小多时候没有办法通过拖拽返回。其实这个问题从我开始开发的时候就存在,感觉影响不是很大就一直拖着没解决。既然有人提出来了,那看来是必须得解决一下了。。。 第一张图就是正常的拖拽返回,第二张有问题。 …

于  iOS开发 继续阅读
comments powered by Disqus