智能手机上市以来,大量的APP如同雨后春笋般出现,随着APP类型的不断增加,我们不难发现,ios系统,APP上架越发困难,难道iPhone用户只能去越狱才能下载APP吗?当然不是,因为有APP签名机制。
在日常工作中,无论是开发阶段还是测试阶段,经常会出现很多需要通过签名机制解决的问题。了解iOS签名机制的原理有助于提高解决相关问题的成本和效率。以下是与APP签名相关的名词说明。
证书:内容为公钥或私钥,是其他机构为签名配置的数据包。
entitlements :包含app权限开关的列表。
CertificateSigningRequest :本地公钥。
p12:本地私钥,可以导入其他电脑。
配置文件:包含证书/实体等数据且苹果在后台使用私钥签名的数据包。
ios APP签名的目的有三个:
1.在个人私钥签名APP应用程序中,识别某个APP应用程序是由开发者开发的,以防止修复。
2.根据苹果的私钥签名,证明该APP程序的开发者是经过验证的,为苹果APP的合法开发者。
3.防止证书权限滥用:其他权限控制,如设备限制、APP指定、iCloud/PUSH/后台运行。
双签名机制:
1.Mac系统生成非对称加密算法的公钥m。
2.正如上面最简单的代码签名所述,苹果自身拥有固定的公钥对,私钥a位于苹果的后台,公钥a位于每个iOS系统的手机上。
3.将公钥m和一些开发者信息(即CSR文件)发送到苹果后台,用苹果后台的私钥a向公钥M签名发送包括公钥m及其签名的结果的数据是证书(.p12 )。
4.在开发时,我们打包时用本地私钥m (即可以导出到伙伴的开发者证书)对该APP进行签名,同时将证书一起打包为APP,安装在手机(实机协作)上,在安装时,iOS系统获取内置公钥a以验证公钥m的数字签名证书是否正确。
5.在验证公钥m已由APPle验证后,使用公钥m验证APP的签名。这将间接验证APPle是否允许安装此APP (请注意,此处只验证安装行为,不验证APP是否已更改)。因为在开发阶段app的内容总是在变化)。
iOS采用沙盒机制运行App,为了增强程序的安全性,在运行时检查代码的签名以防止代码被篡改。二维码签名描述文件是苹果解决方案,以上是IOs APP签名的原理。