如何发布一个iOS全新APP--从证书管理到Jenkins任务上的archive打包上传

楼主之前在的公司是有专门的EP部门管理iOS客户端的证书、打包、上传什么的一堆逻辑,这块东西基本上对楼主来说是黑盒的。去年跳槽到新的公司后,发现这边的部门间都是独立管理自己的所有事情,不存在一个类似于全公司的EP的部门存在,而且楼主去的是个新成立的部门,就遇到了几乎是从0到1的全新APP的上架问题,头疼的搞了差不多一周多,最终是整了一套完整的证书与打包机制,但是当时一直没有搞懂里面的一些校验机制与推送机制,所以一直没敢出文记录,直到前几天收到PUSH证书快到期的提示,被迫硬着头皮搞了一遍PUSH证书,这才算是大致理解了苹果爸爸这一整套机制,怕自己忘记,所以markdown一下。纯属个人理解,有问题请帮忙指出。

总体介绍

本文会从实用主义的如何对一个已有的工程进行证书与PP描述文件进行配置、对一个已建立好的appid进行PUSH证书的配置以及根据个人的整理与理解,浅谈一下iOS的签名机制。

  • 浅谈iOS签名与校验机制
  • 从无到有创建一个已有项目的开发证书
  • 创建项目对应的推送证书

浅谈iOS签名与校验机制

众所周知,iOS的签名与校验机制是非常复杂又混乱,一个独立的APP从生成打包到发版,其中你会遇到以下各种概念与文件,各种证书、Provisioning Profile、CertificateSigningRequest、p12、p12、APPID等。本文是在阅读了bang大神的博客后,加上自己操作发布了一款app后对这套流程有了一个大致清晰的理解。

前言

在苹果的iOS系统之前,我们所熟悉的操作系统,比如linux、Windows、Mac等,都是可以直接通过下载安装包然后,双击或者其他方式去安装。这样就导致随便在哪下载了一个安装包后都能运行,导致平台很难控制盗版或者是其他恶意的传播。但是苹果对安装在iOS系统上的每个APP都有绝对的掌控权,主要就是通过这一套复杂的数字签名与校验实现的。

数字签名机制

数字签名机制就是通过将摘要算法和非对称加密算法结合到一起实现的。
其中摘要算法是通过将任意长度的文本,通过一个算法(常见的有MD5、SHA等),得到一个固定长度的文本。
对称加密算法是通过同一份秘钥加密和解密数据,而非对称加密算法则是有两份秘钥:公钥和私钥,生成者负责生成私钥与公钥,并保存私钥,公开公钥;公钥是公开的,但不可能通过公钥反推出私钥,或者说极难反推,只能穷举,所以只要密钥足够长度,要通过穷举而得到私钥,几乎是不可能的;通过私钥加密的密文只能通过公钥解密,公钥加密的密文只有通过私钥解密。

从无到有创建一个已有项目的开发证书

证书申请