对于苹果手机APP来说,上架在AppStore上基本上是唯一的途径,但随着社会的发展,苹果手机APP的种类越来越多,面对越来越多的APP,苹果官方对上架在AppStore上的APP也越来越严格,在这样的环境下,苹果的ios签名受到越来越多开发者的喜爱。苹果的ios签名是为了帮助无法在AppStore上展示的app,通过签名方式可以实现苹果手机上app的发布使用,是一种高效、方便的内测模式。
苹果签名的机制
苹果的需求:
(资料图片)
1.为了确保系统的安全,所有iPhone上安装的APP应用程序都必须得到苹果的许可。
2.安装包无需上传到App Store即可安装(开发调试 企业灰度);
3.防止证书权限滥用:其他权限控制,如设备限制、APP指定、iCloud/PUSH/后台运行
苹果ios签名原理:
如果我们iOS设备安装App只是从AppStore这个入口,那么事情很简单,一个数字签名就可以了。
但实际上iOS安装APP还有其他途径。 例如,对于开发者来说,真机调试是必要的。 此外,苹果还开放了企业内部的分发渠道,签署企业证书的APP也需要顺利安装。
苹果需要开放这些方式安装APP,那样就不能实现简单的代码签名。
双重签名认证
iOS的签名流程在这里简单整理一下,这也不是最终的iOS签名原理,iOS的最终签名需要在此基础上再添加一些东西。
首先,有两个作用: 一个是iOS系统,另一个是我们的Mac系统,因为iOS的APP开发环境在Mac系统下,所以这种依赖关系成为了苹果双重签名的基础。
Mac系统可以生成公钥Mac和私钥Mac对iPhone设备内置名为公钥Apple的公钥,与苹果服务器上的私钥Apple相对应。
签名过程如下:
1、在Mac中生成密钥对(公钥Mac和私钥Mac)。在“密钥串”中的“从认证机构请求证书”中制作,私钥以本机形式存在,并且公钥包含在CertificateSigningRequest文件中。
2、将CSR文件上传至苹果服务器,苹果服务器用私钥Apple加密CSR的哈希值和生成证书(证书中包括公钥Mac和私钥Apple加密的哈希值)。
3、在开发编译阶段,每次编译结束时,Mac用私钥Mac(p12文件)对App签名,将在上一步骤中获得的证书打包在App中。此时,App包括在前一步骤中生成的证书(证书包括公钥MAC及其私钥Apple加密的哈希值)。
4、iPhone设备安装App时,首先用设备中内置的公钥Apple对前面的哈希值进行解密并获取证书,然后获取公钥Mac。如果解密成功,则该证书指示由苹果服务器发出,随后可获得公钥Mac以解密App包的签名。该App是用私钥Mac签名的,这一点可验证安装是否成功。
苹果签名分为企业签名、超级签名、TF签名,种类不同,原理不同,企业签名是使用最为广泛的方式,通过企业签名生成的P12证书对IPA包进行打包签名,最大的优点就是没有下载次数的限制,价格也比较适中,是众多用户选择最多的一种。