备案域名
ios企业签名跟超级签名到底哪个更稳定以及原理
iOS签名机制很复杂,各种证书,Provision Profile,entitlements,CertificateSigningRequest,p12,AppID,这篇文章我从概念出发,一步一步推出为什么会有这么对概念,希望能有助于理解iOS的App签名的原理,以及udid签名跟超级签名到底那个稳定在iOS出来之前,在主流操作系统(Mac,Windows,Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运行,导致平台对第三方软件很难控制,盗版盛行。苹果希望解决这样的问题,希望iOS平台对第三方App有绝对控制权,一定要保证每一个安装到iOS上的App都是经过苹果官方允许的,怎么保证呢?就是通过签名机制。
要实现这个需求很简单,最直接的方式,苹果官方生成一对公私钥,私钥由苹果后台保管,公钥内置到iOS设备里,在我们将App上传到App Store上时,苹果后台使用私钥对App进行签名,iOS设备下载这个应用后,用公钥验证这个签名,若签名正确,则说明这个App是经过苹果后台认证的,并且没有被修改过,这样也就达到了苹果的目的:保证iOS设备安装的每一个APP都是经过苹果官方允许的。
如果我们的iOS设备安装App只通过App Store这一种方式的话,那么问题到这里就已经解决了,但是实际上除了从App Store上下载应用,还可以以一下三种方式安装一个APP:
1.作为开发者,开发App时直接进行真机调试。
2.In-House 企业内部分发,可以直接安装企业证书签名后的App。
3.AD-Hoc 相当于是企业分发的限制版,限制安装设备数量。
苹果要对这三种方式安装的APP进行孔子,就无法像上面这样简单了。
我们先来看第一个,开发时安装APP,它有两个需求:
1.安装包不需要传到苹果服务器,可以直接安装到手机上。
2.苹果必须对这个安装过程有控制权,包括:
a.经过苹果允许才可以这样安装
b.不能被滥用导致非开发App也能被安装。
为了满足这个需求,iOS签名的复杂度也就开始增加了。