APP签名和证书

4 10月

苹果要求所有APP都要有签名和证书,目的是保证APP的安全性和控制权。

正式版APP,开发者其实不用关注签名和证书,都是APP Store和IOS端自动搞定的。APP上线App Store时,App Store会自动为APP加上签名和证书加密。当用户从App Store上下载APP时,手机的IOS系统有解密的公钥和私钥,主要是检测这个APP是否是从官方App Store上下载的,是否是经过App Store的验证和封装的。

难搞的是本地开发时如何发调试版,不能将它们发送到App Store上,让苹果为我们的调试版加上签名和证书,然后下载到本地解密后调试。苹果又不允许这样的随意安装APP。

当然苹果提供了一套本地安装调试版APP的方案:思路就是要校验开发者是合法开发者,证书是苹果的授权的证书,限制了安装在指定设备上。

1.将BundleID和DeviceID打包进Profiles集合文件
2.编译过程中,将Profiles集合文件传入,在打包时进行验证(目的是通过BundleID和DeviceID的限制,解决苹果不允许随意在本地安装APP的问题,等同于这个APP是从APP Store上下载的)

本地还需要验证Profiles集合文件的权限,防止Profiles被非法篡改过:本地钥匙串生成CSR,加上本地私钥P12,结合证书进行验证。

整体流程:

本地CSR

打开【钥匙串访问】->【证书助理】->【从证书颁发机构请求证书】->填入你苹果账号,生成CSR,并保存到本地硬盘。

Certificate

苹果开发者官网上,进入【Certificates, Identifiers & Profiles】管理页面,点击【Certificates】,上传本地硬盘上的CSR文件,就能生成证书。新生成的证书能在列表页里看到。

Profiles

苹果开发者官网上,进入【Certificates, Identifiers & Profiles】管理页面,点击【Profiles】,创建Profiles集合文件,其中证书就选择上面刚创建的证书,再选择Identifier Bundle ID,再选择设备Device ID,就能生成一个Profile集合文件。新生成的Profile能在列表页里看到。

将生成的Profile下载到本地硬盘。

编译打包

本地工程下【General】tab里的【Signing Debug】里【Provision Profile】选择上面下载的Profile文件即可。

当然如果你是独立开发者,选择【General】tab里的【Signing】里【Automatically manage signing】自动管理证书就行

其他证书

证书就是封装本地CSR,Bundle ID,Device ID的东西,明白了上面开发者证书的流程后,其他类型的证书(如Push证书)的套路都是一样的。

本地生成好CSR后,在苹果开发者官网上,进入【Certificates, Identifiers & Profiles】管理页面,点击【Certificates】,创建你想要的Push类型的证书。

发表评论

电子邮件地址不会被公开。 必填项已用*标注