移动开发技术

Jason's Blog

对iOS App签名的理解

关于iOS设备签名的原理,这篇文章说的比较清楚了。如果忘了的话可以重新阅读以下。

iOS App 签名的原理

这里按照我的理解角度复述一下:

  1. 为了不让每次开发App,都将App上传到苹果后台,用苹果后台的私钥A签名,需要本地生成一对公私钥。这样每次签名就在本地Mac机器上,用私钥L签名就可以了。
  2. 那么苹果如果验证公钥L的合法性呢,就需要开发者将公钥L上传到苹果的后台,苹果用私钥A进行一次签名,签名+公钥L就是证书了。(这里实际上用一次对公钥L的签名替代了每次对App的签名,省去了App每次修改都上传签名的麻烦,很巧妙)
  3. 第2步中的证书+一些额外信息(AppId,设备列表,push权限等)全部都在苹果的后台用私钥A签名,打包成的东西叫Provisioning Profile,下载到本地Mac后,打包在App中。安装在iOS设备的时候,用公钥A对其进行解密,验证证书+一些额外信息(AppId,设备列表,push权限等。证书验证后拿到公钥L,对App数据进行解密验证(App是用私钥L签名的)。

好了,上边的文字其实看着还是有点乱和绕,权当我自己的思路做参考吧。

回到我们的项目,其实有一点是可以改进的。

以上图片是我们项目在苹果后台的证书配置,可以看到,有很多项,原因是每个开发的电脑上都生成了一对公钥L和私钥L,然后将公钥L上传到苹果后台生成了证书。更好的办法是,只用一台开发电脑生成公钥L和私钥L,然后到处p12文件,分享给别的电脑,这样苹果后台就只需要一个证书就可以了。

Comments