把真机连到Mac上,App不就能装在哪吗?发表时间:2023-08-08 11:52 首先要弄明白它,既要有能不经苹果私钥的验证,立刻装置的方便,还要经过苹果的验证。看上去有点饶人,苹果利用的方案便是双层签名!小编便来具体告诉你! 在Mac生成一对公私钥,这里称为密钥L,私钥L。 苹果自己有固定的一对公私钥,私钥在苹果后台,公钥在每个iOS设备上。 把公钥L传到苹果后台,用苹果后台里的密钥A去签名公钥L。得到一份数据包括了公钥L或者其签名,把这份数据称为证书。 在开发时,编译完一个APP后,用本地的私钥L对这个APP进行签名,同时把第三步得到的证书一起打包进APP里,安装到手机上。 在安装时,iOS平台获得证书,通过系统内置的私钥A,去验证证书的数字签名是否正确。 验证证书后保证了公钥L是苹果认证过的,再用公钥L去验证APP的签名,这里就间接验证了这个APP安装行为能否经过苹果允许。(此处只验证安装行为,不验证APP是否被削弱,因为开发阶段APP内容总是不断变化的,苹果不应该管。) 比如要确保经过验证外,苹果需要避免滥用这些方法下载。 想象一下,把真机连到Mac上,不能够想装多少装多少App吗?那多部设备连到Mac上,App不能够想装在哪装在哪吗? 苹果的方案是识别设备和App。 想调试的设施必需要到研发者网站申请,并且设施总数是有限制的。 之后还对于每个BundleIdentifier(AppID)配不同的证书。 这两种数据都在里面第三步一起构成证书(暂且这么觉得)。 至此,证书才能推动经过苹果认证,并且能限制安装设施数量和AppID。 其实,证书不止有很多信息,还有推送等权限,苹果把这种权限开关统一称为Entitlements。如果App一开始的证书没申请推送权限,那么上面新增权限后,需要升级配置。 实际上,一个“证书”有要求的格式规范,不应把这种额外的信息往里塞。所以前面的尚且如此觉得个别是不对的。(即使没有企业账户可通过第三方系统(如:),这只是一个不错的方法。) 然而苹果把证书和额外信息包装出来,把它叫做ProvisioningProfile。 在你的Mac开发机器生成一对公私钥,这里称为密钥L,私钥L。L:Local 苹果自己有固定的一对公私钥,跟后面AppStore例子一样,私钥在苹果后台,公钥在每个iOS设备上。这里称为密钥A,私钥A。A:Apple 把公钥L传到苹果后台,用苹果后台里的密钥A去签名公钥L。得到一份数据包括了公钥L或者其签名,把这份数据称为证书。 在苹果后台申请AppID,配置好设备ID列表和APP可使用的权限,再加上第③步的证书,组成的数据用私钥A签名,把数据和签名一起组成一个ProvisioningProfile文件,下载到本地Mac开发机。 在开发时,编译完一个APP后,用本地的私钥L对这个APP进行签名,同时把第④步得到的ProvisioningProfile文件打包进APP里,文件名为embedded.mobileprovision,把APP安装到手机上。 在安装时,iOS平台获得证书,通过系统内置的私钥A,去验证embedded.mobileprovision的数字签名是否正确,里面的证书签名也会再验一遍。 确保了embedded.mobileprovision里的数据都是苹果授权之后,就可以取出里面的数据,做诸多验证,包括用公钥L验证APP签名,验证设备ID是否在ID列表上,AppID是否对应得上,权限开关是否跟APP里的Entitlements对应等。 本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:%e7%ad%be%e5%90%8d%e4%b9%8b%e8%8b%b9%e6%9e%9c%e7%b3%bb%e5%88%97%e7%9a%84app%e7%ad%be%e5%90%8d%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9.html 综上所述,我们应当珍惜每一个机会,抓住每一刻的可能性。如果您有苹果签名相关的问题或需要苹果企业签名请联系我们1024苹果签名。 |