证书制作的流程截图网上有很多,所以就不再赘述,这篇文章只记录一些原理性的东西,因为我研究了好久才弄明白各种证书的作用和修改的时候互相的影响,所以总结下,以便后来人省点力气,也算是我的笔记。如有出错之处,请指出,多谢。对于苹果官方文档描述的,xcode中用私钥对代码进行签名,苹果用公钥验证签名有效性的流程不是很了解,大学学的那点密码学全都还回去了,如果有人了解还望指点一二。

1. 制作证书时,首先从钥匙串提交申请,生成一个certSigningRequest文件,这个文件是证书的申请文件。经过观察,这个文件产生后,钥匙串内并没有产生公钥和私钥,因此这个文件纯粹就是一个带有申请信息的文件。这个申请文件包含产生公钥和私钥的生成码之类的东西,并且包含本机的某些信息。

为什么这么说呢,提交这个文件申请的certificate的公钥和私钥对是同一对,无论申请什么证书,带有的公钥,私钥都不会发生变化。并且生成的certificate在创建certSiginingRequest文件的本机安装,就可以导入私钥到钥匙串,在其它机器安装只能得到公钥,由此分析,request文件中的信息决定了产生的公钥和私钥,并且决定了证书所能安装的机器。 不过值得说明的一点,申请不同证书可以使用同一个certSigningRequest文件,也可以使用不同的(比如开发证书,发行证书,推送证书等),只要保证证书安装后有相应私钥在钥匙串中就可以。迁移时也是.cer文件和私钥一起迁移就可以。

产生的私钥用于对代码进行签名,如果编译时出现签名之类的报错,就找私钥相关问题。

2.制作证书第二步,是从个人账号创建开发环境或者发布环境的证书,产生的文件为.cer文件,这个文件是授权xcode进行构建工程的。这个文件是提交上一步提到的certSigningRequest文件申请得到。xcode编译时,会先检查mobileprovision文件中指定的.cer证书是否安装了,如果安装了,并且有对之进行签名的私钥,然后再进行mobileProvision文件中的其他信息进行检查。

3.添加应用,应用的关键信息就是应用的bundle ID,这个是全球唯一的,其他配置不再赘述,推送我在后面描述,此处先描述完整普通应用中涉及到的内容。

4. 添加设备,设备的作用为,开发环境的证书包含此设备,此设备才能进行调试。

5.做mobileprovision文件。这个文件是整合了2,3,4步的信息的综合文件。也就是如果2,3,4步中哪一步修改都要重新去做这个文件。否则这个证书就失效了,必须重新做。

整体来说,第二步的证书申请之后,一般在开发的过程中不会再修改,如果迁移证书到另一台机器上,拷贝第二步中产生的.cer文件,和该.cer文件对应的私钥导出的p12文件,还有第五步产生的mobileprovision文件到新的机器,然后在新的机器上分别安装这几个文件就可以了。

----------------------------------------------------------------

下面说一下推送证书的制作。推送证书在上述的第三步中进行配置,第三步中的应用可以配置额外的证书,推送就是其中之一。推送证书也分为开发和发行两种版本。推送证书也是先提交certSigningRequest文件然后生成的,这个certSigningRequest文件是否和上述第一步的文件相同不重要(相同的话,最后所用私钥也就是同一个,不影响)。生成的发行证书也是.cer文件,安装在本机即可。此处注意,此证书和上述第二步中的证书是相互独立的。也就是一个修改不影响另一个证书,不用重新制作另一个证书。

但是,有一点,因为推送证书修改了上述第三步中的应用配置,所以此处配置会影响到上述第五步产生的文件provision文件(也就是修改推送,第五步文件就要重新做)。

推送证书如果重做了之后(app过户或者证书过期都可能会需要重做),老的推送证书提交的app的推送功能不会受到影响,这个推送证书只是用于推送服务器和apns创建连接时做安全验证用的。所以这个证书是动态更新的,不用appstore提交更新才生效,推送服务器更新就生效。这点不像xcode的发型证书。

推送服务器使用的证书会和developer网站上配的最新的推送证书做对比,只要两边一致推送就能成功。

xcode配置应用工程的时候,Code Signing Identity选项选择的是私钥,选择的选项,括号中的编码与私钥中括号中的编码相同,到时候判断配置是否正确时可以比一下。

xcode另一个配置Provision Profile配的是mobileprivision文件(第五步中描述的),这个文件必须保证是最终配的,有效地。

如果各个地方都配对了,还是报错,如果是报mobileprivision文件找不到的话,就点击xcode的prefference菜单,在弹出窗口里面找到开发账号,点击view details按钮,弹出xcode中所有签名和证书,点一下download all。如果还不行,只能重启xcode或者重启电脑了,我就遇见过证书都对,却一直报错,重启了就不报错了的情况,什么软件都会有bug嘛,包括xcode。

-----------------------------------------------------------------

生成了推送证书之后,需要把证书提供给推送服务端,由于多数服务器是windows或linux不识别cer文件,所以要把推送证书的cer文件和相应的私钥导出的p12文件转成pem文件提供给服务端,网上也有很多相关的转换方法,转完后连接苹果服务器测试一下没有问题就可以提供给服务端了

简单记一下命令吧

两个文件格式转换:

$ openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem

$ openssl pkcs12 -in key.p12 -out key.pem -nodes

//合并两个文件

$ cat  cert.pem decryptedkey.pem > apns.pem

测试证书和key是否正确,能连上苹果的apns服务器。
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cert.pem -key key.pem # sandbox
$ openssl s_client -connect gateway.push.apple.com:2195 -cert cert.pem -key key.pem # production

如果要去掉key pem文件里的密码保护,执行下面的命令行处理pem文件,得到没有密码保护的pem文件。
openssl rsa -in apns_dev_key.pem -out apns_dev_key.unencrypted.pem
openssl rsa -in apns_prod_key.pem -out apns_prod_key.unencrypted.pem

证书制作,各个环节的原理以及推送证书制作,和如何为推送服务器提供证书相关推荐

  1. 国内服务器证书,中国互联网协会-CNNIC推出国内首个服务器域名证书

    CNNIC推出国内首个服务器域名证书 更新时间:2009-04-09 22:02:48 核心提要:CNNIC推出国内首个服务器域名证书 比特网(ChinaByte)4月9日消息 CNNIC今日早间宣布 ...

  2. iOS 用自签名证书实现 HTTPS 请求的原理实例讲解

    在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求.默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info ...

  3. iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解...

    什么是消息推送 举一个常见的例子,我们的手机上经常会有弹出一些信息,例如QQ信息.微信信息等等,这就是常见的消息推送. 例如: 消息推送的类型: 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出 ...

  4. iOS 用自签名证书实现 HTTPS 请求的原理

    在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求.默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info ...

  5. 【强推】Blender制作逼真人物角色完整案例视频教程

    [强推]Blender制作逼真人物角色完整案例视频教程 [强推]Blender制作逼真人物角色完整案例视频教程 时长53h 30m 1280X720 MP4 含教程工程文件 共九大模块 130小节课程 ...

  6. 数字证书及网络加解密原理

    数字证书及网络加解密原理 层次一 报文完整性验证 小明的明文(小刚的公钥加密)-> | 密文 |---传输----> |密文 |--------->(小刚私钥解密)------> ...

  7. 京东 你访问的页面需要验证证书_SSL证书安全认证有什么原理?

    SSL证书是HTTP明文协议升级HTTPS加密协议必备的数字证书.它在客户端(浏览器)与服务端(网站服务器)之间搭建一条安全的加密通道,对两者之间交换的信息进行加密,确保传输数据不被泄露或篡改.通过它 ...

  8. 单片机小白学步系列(二十三) IO口原理知识补充:双向IO口、互补推挽、高阻态

    由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识. ================================================= 双向IO口的输出:互补推挽 在 ...

  9. AAA服务器【Radius Server】服务器搭建证书制作指南

    [非经允许,不得转载] "风萧萧兮易水寒,壮士一去兮不复还." 折腾了一个多礼拜,总算把Radius Server搭建起来了,期间在网络上爬了大量的博文,大多已经老旧,在实际搭建测 ...

  10. 【苹果推】推信真机群控群发而按照 pem文件作为证书

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

最新文章

  1. 2022-2028年中国交通建设PPP模式深度分析及发展战略研究报告(全卷)
  2. 对于PHP框架的简单认识
  3. vue2.0项目中使用Ueditor富文本编辑器应用中出现的问题
  4. 用再生龙Clonezilla 来克隆Linux系统!!
  5. 【C/C++】algorithm头文件下常用函数
  6. hdoj 1863 畅通工程 最小生成树---prime算法
  7. OSPF配置命令总结
  8. 如何用word制作英语答题卡_初中英语考试答题卡可编辑WORD版
  9. NodeJS:图片验证码登录
  10. 呼和浩特php平均工资,2019年内蒙古平均工资出炉
  11. 速成应用免费教你如何制作开发预约类型的美容美发行业微信小程序「教程」
  12. 揭秘跨境电商亚马逊店铺最新骗局!!小白做亚马逊店铺如何防止上当受骗?
  13. 计算机专业术语,收藏用
  14. mac装机必备的电池管理工具:App Tamer Mac版
  15. EXCEL如何实现两个表的相应数据关联
  16. Kinect v2.0原理介绍之十三:面部帧获取
  17. 深度学习OCR | 文字识别网络 CRNN 论文翻译
  18. 安卓手机管理软件_留言帮忙找:手机清理软件合集 Android
  19. 图片怎么在线转换成PDF格式
  20. matlab:plot线型和颜色

热门文章

  1. Docker引擎客户端工具docker的总结
  2. cass二次开发vba和lisp_CAD二次开发LISP视频_小懒人CAD工具箱_CAD插件_CASS插件_LISP代码...
  3. 魅族插了卡显示无服务器,魅族手机SD卡无法读取怎么办解决方案
  4. 使用计算机对炼钢过程,炼钢过程计算机二级系统
  5. eclipse中文汉化操作 2020-12
  6. rk3399pro Andoid9.0 修改系统默认音量设置
  7. 精心整理|Python爱好者社区历史文章合集(作者篇)--20190925从豆瓣获取
  8. 1047: 对数表 Java
  9. python webqq机器人_[代码全屏查看]-python3.2模拟登录webqq
  10. 【信息系统项目管理师】第十五六章 配置管理和标准化