您好,欢迎来到 ios企业签名! 【快速注册】 【登录QQ登录

您可以 “CTRL+D”一键收藏本站网址 ,下次访问更快速!

ios企业签名

苹果软件掉证书iOS App 签名的原理

更新时间:2019/12/5 / 阅读次数:118

很多果粉(非程序员),会有这样的疑问,为什么Android、Windows、Mac OS等系统可以随便在哪里(应用商城)下载一个软件就能安装使用。而iPhone (iPad、iPod 等非越狱 iOS 设备)只能在AppStore下载软件。其实了解的同学知道,这是苹果爸爸为了保证iOS 平台对第三方 APP 绝对的控制权和每一个安装到 iOS 上的 APP 的安全性。而采用的一种签名机制。那么问题来了,什么是签名机制呢?它的原理是什么?

通常我们说的签名就是数字签名,它是基于RSA 非对称加密实现的。对称加密是通过同一份密钥加密和解密数据,而非对称加密则有两份密钥,分别是公钥和私钥,用公钥加密的数据,要用私钥才能解密,用私钥加密的数据,要用公钥才能解密。

数字签名的作用是我对某一份数据打个标记,表示我认可了这份数据(签了个名),然后我发送给其他人,其他人可以知道这份数据是经过我认证的,数据没有被篡改过。

iOS签名时需要一个证书(这里就不讲述证书的申请过程了),这个证书包含了很多信息,除了 设备 ID / AppID,还有其他信息也需要在这里用苹果签名,像这个 APP 里 iCloud / push / 后台运行 等权限苹果都想控制,苹果把这些权限开关统一称为 Entitlements,它也需要通过签名去授权。

苹果自己有固定的一对公私钥,跟上面 AppStore 例子一样,私钥在苹果后台,公钥在每个 iOS 设备上。这里称为公钥A,私钥A。A:Apple

把公钥 L 传到苹果后台,用苹果后台里的私钥 A 去签名公钥 L。得到一份数据包含了公钥 L 以及其签名,把这份数据称为证书。

在苹果后台申请 AppID,配置好设备 ID 列表和 APP 可使用的权限,再加上第③步的证书,组成的数据用私钥 A 签名,把数据和签名一起组成一个 Provisioning Profile 文件,下载到本地 Mac 开发机。

在开发时,编译完一个 APP 后,用本地的私钥 L 对这个 APP 进行签名,同时把第④步得到的 Provisioning Profile 文件打包进 APP 里,文件名为embedded.mobileprovision,把 APP 安装到手机上。

在安装时,iOS 系统取得证书,通过系统内置的公钥 A,去验证embedded.mobileprovision的数字签名是否正确,里面的证书签名也会再验一遍。

确保了embedded.mobileprovision里的数据都是苹果授权以后,就可以取出里面的数据,做各种验证,包括用公钥 L 验证APP签名,验证设备 ID 是否在 ID 列表上,AppID 是否对应得上,权限开关是否跟 APP 里的 Entitlements 对应等。

前面以开发包为例子说了签名和验证的流程,另外两种方式 In-House 企业签名和 AD-Hoc 流程也是差不多的,只是企业签名不限制安装的设备数,另外需要用户在 iOS 系统设置上手动点击信任这个企业才能通过验证。

而 AppStore 的签名验证方式有些不一样,前面我们说到最简单的签名方式,苹果在后台直接用私钥签名 App 就可以了,实际上苹果确实是这样做的,苹果软件掉证书如果去下载一个 AppStore 的安装包,会发现它里面是没有embedded.mobileprovision文件的,也就是它安装和启动的流程是不依赖这个文件,验证流程也就跟上述几种类型不一样了。

ios企业签名 http://www.yc23c.com

上一篇:U苹果x封装技术nity使用Xcode将项目打包成IP

下一篇:苹果开发者账号和证书那些事苹果 手写签名

最新文章

最热文章

收缩
  • 电话咨询

  • 稳定不掉签名