App 上架 AppStore 需要经过苹果的审核,违规 App 不能上架。苹果 iOS 系统有一套完善的加密方案,在不越狱破解的情况下,非 AppStore 下载的 App 需要证书签名,才能在 iOS 上运行。

证书需要向苹果申请,有几类证书。

  • 免费证书。用于入门级开发者,可以用 Xcode 真机调试,不能上架 AppStore。
  • 个人开发者证书。需要收费,支持个人真机调试,可以将上架 AppStore。
  • 公司证书。需要收费,支持多人协作开发,可以将上架 AppStore。
  • 企业证书。需要收费,支持企业自己发布 App, 不可以上架到 AppStore。

某些 App 可以通过 Safari 下载,信任证书后正常使用。这种 App 就是用了企业证书。

为什么苹果公司允许企业证书呢?顾名思义,企业证书是在企业内部使用的。正常情况下,企业证书有如下用途。

某些 App 只是企业内部使用,不方便上架 AppStore。比如企业内部有个 OA 系统,用于员工打卡、请假、收发邮件。企业为 OA 系统开发了 iOS 的 App。这个 App 对企业内部员工很有用,企业外用户完全无用。因此这个 OA 系统 App 不方便上架 AppStore,就算想上架,也不能审核通过。

某些 App 虽然可上架 AppStore 外发,但新版本还在开发测试过程中。使用企业证书签名 App,放到网上,员工打开网页就可下载,方便测试。在开发测试期间,往往一天好几次构建新安装包,内部员工(特别是测试人员)在网上可以下载到最新的测试包。

------------------------

假如通过企业证书,将一些内容违规(比如色情、政策、版权、隐私等)不能上架的 App 外发给用户,属于滥用企业证书。

也有些 App 本身内容并没有什么不妥,实际可以上架 AppStore。但它包含内购,比如某些会员充值,游戏道具购买之类。苹果规定,假如 App 内购买的虚拟物品,是用于 App 本身的,就需要接入苹果的应用内购买(In-App Purchase,IAP), 不能使用第三方支付。但假如使用苹果的 IAP,内购收益需要分给苹果三成。有些 App 不想给苹果分成,想使用微信、支付宝等第三方支付,就用企业证书来分发 App。对于苹果公司来说,这也是企业证书的滥用。

苹果公司不允许滥用企业证书。一旦发现,情况恶劣,会封杀企业证书,企业证书被封杀后,企业自己发布的 App 就闪退不能用了。

另一个惩罚是,将开发者(个人或公司)列入黑名单。列入黑名单后,审核通常会非常慢。有时不仅仅是违规 App,而是这个开发者名下的所有 App 审核都非常慢。正常情况下,App 平均审核时间是两三天。但黑名单上的开发者,有时会审核几周,甚至几个月。几个月不能发布新版本,就会损失很大。

更重的惩罚是,将开发者名下的 App 全部下架,整改后才能重新上架。

有些企业为了避免牵连,有时会用不同的银行卡注册不同的开发账号。需要用不同的银行卡,因为苹果公司会检查银行卡账号,银行卡账号相同的,基本可以判断是同一个用户。自然有时会误杀。个人开发者,不要将自己的银行卡借给他人(比如亲戚)注册开发者账号,不然可能会受到牵连。

苹果对企业证书管理比较严,催生了淘宝上的一个生意,贩卖企业证书。有些 App, 因为内容违规或其它原因不能上架,但又不想暴露自己的企业证书。就会在淘宝上购买其他企业证书来签名发布,跟苹果公司打游击战。淘宝某个企业证书暴露被封杀了,又换一个企业证书重新签名发布。

------------------------

iOS 证书签名,实际是某种数字签名。数字签名基于非对称加密,目的保证文件没有被篡改。比如 A 要发文件给 B, A 生成一对私钥和公钥。A 保留私钥,而将公钥发给 B(或者将公钥预先给B)。要发文件了,A 就先计算文件的摘要,之后将摘要用私钥加密。之后将文件和加密摘要一起发给 B,B 就用公钥将摘要解密,同时计算出文件的摘要信息。之后 B 对比解密后的摘要,和计算出来的摘要,假如两者相同,就表示文件没有被篡改。

下面我粗略描述一下认证流程,细节可能有误。

苹果有一对私钥和公钥,私钥在他的服务器上,经过重重保护。而对应的公钥内嵌在每一台 iOS 设备上。

当开发者注册证书时,会在本机生成私钥和公钥,将公钥上传给苹果服务器。苹果服务器用自身的私钥,对开发者上传的公司做数字签名,生成证书(cer)。经过苹果的私钥签名,就保证这个开发者证书没有被篡改。这个证书并非公钥本身,但它包含了公钥。

同时开发者会将 App 的描述文件(.mobileprovision) 下载回本机。描述文件主要用于控制 App 的权限,比如这个是否推送、是否支持 iCould 等。

原则上,证书(cer) 和描述文件(.mobileprovision) 是可以合并的。但每个 App 的权限都有所不同,于是就将其拆分成证书和描述文件。

当 App 构建签名时,选择证书(cer) 和描述文件(mobileprovision),会寻找对应的私钥,找不到私钥就会签名失败。之后计算 App 所有资源的摘要,将摘要用私钥加密,生成一个 _CodeSignature 的目录。同时会将公钥和权限信息嵌入到最终生成包中,生成 embedded.mobileprovision_CodeSignature 中的摘要经过私钥加密,embedded.mobileprovision 包含对应的公钥用于加密(这个公钥经过苹果自身私钥的签名,保证不会被篡改)。私钥只在本机中保存,用于构建时加密,并不会包含在安装包中。

上述签名过程,Xcode 是全自动的,开发者没有必要了解其过程。整个流程,私钥都只保存在本机中,并没有经过网络,假如私钥经过网络传输,就可能被窃取而不够安全。而本机上的私钥,可以导出成 p12 文件,导入到另一台开发机中。

------------------------

用户安装这个 App 后,需要手动信任描述文件。信任后,苹果用自家的公钥来验证开发者的公钥没有被篡改。再用开发者的公钥将 _CodeSignature 保持的摘要信息解密,验证 App 的资源本身没有被篡改。经过验证,App 就可以运行。

App 内的描述文件,需要用户手动选择信任的。App 不可能在用户不知情的情况下偷偷运行。企业证书签名过的 App, 加密的摘要,和用于解密的描述文件都包含在安装包中。因此用户用Safari 打开链接、安装、信任描述文件后,就可以运行。

而开发者上传到 AppStore 上的 App,会经过苹果的私钥重新加密签名。因此在 AppStore 上下载的 App,不用手动点信任,也可以直接运行。iOS 设备必然可信任苹果自身的证书。

iOS 也有第三方应用商店,比如 PP助手、同步推等等。这些商店号称免费安装任何 App,实际是去抓别人的 App,用自己的企业证书重新签名。因而信任第三方商店证书之后,就可以免费运行众多收费 App。但这是有隐患的,因为你不知道这些商店重新签名时,添加了些什么东西。第三方商店为了盈利,也很有动力偷偷添加些佐料。

对于最终用户,没有必要理解上述验证。只需要记住,不要安装来历不明的 App。就算不小心安装了,也不要信任其描述文件。只要不信任,它就没有办法运行。只在 AppStore 下载 App,不要为了贪小便宜去第三方商店下载 App,也不要越狱 iOS 系统。现在的手机不单单是电话本身,还是你的钱包、名片,实在太重要了。

转载于:https://www.cnblogs.com/w-s-l123/p/10195971.html

为什么苹果允许用户安装未受信任的企业级开发者所开发的软件?相关推荐

  1. iphone如何信任软件_苹果手机“未受信任的企业级开发者”怎么解决?

    在苹果手机上下载非官方app里的软件,点击使用的时候经常会弹出"未受信任的企业级开发者"的提示界面,这个时候软件也就无法使用,那么具体如何解决这个问题呢,接下来看教程. 1.进入苹 ...

  2. 解决在iOS9上安装的软件显示未受信任的企业级开发者

    转自:http://zhidao.baidu.com/link?url=I_jRAAgCakUVD_vyNpwrt6S-3-jKPugcMVEYuwZRtHpChtHFwpjuyxMatAxZmYqD ...

  3. xy苹果助手未受信任_苹果应用掉证书?突然打不开怎么办?

    任何苹果软件在开发之前都需要向苹果申请(以个人或组织) 注册开发者账号,付款购买开发权限,这就是所谓证书. Apple 开发者分为个人.公司.企业三类,个人和公司开发者可以将自己开发的软件上架 App ...

  4. xy苹果助手未受信任_重要通知:苹果APP紧急修复!

    尊敬的用户,您好! <熊猫斗地主>苹果手机版本掉了签名,我们第一时间修复了此问题,解决方案如下: 1.删除已安装的熊猫斗地主APP 首先,按住熊猫斗地主图标,出现"x" ...

  5. xy苹果助手未受信任_全网难找的iOS苹果版百度网盘SVP来了

    今天的工具可以来说难得一遇,也是很多朋友由于手机系统问题,之前的安卓版SVIP只能望眼欲穿,终于给大家搞来了ios苹果版的超级会员. 它就是:百度网盘SVIP苹果版(ios版) [效果演示] 我是苹果 ...

  6. 苹果手机app应用显示未受信任打不开怎么办

    用HBuilder开发的ios手机版移动应用,安装在手机上,打开时会显示"未受信任的企业级开发者",只有一个[取消]按钮.我们经常在开发时,会遇到这种问题,那么下面就是我总结出来的 ...

  7. xy苹果助手未受信任_2020新春精品——S级性价比:苹果/安卓/电脑统一适配音乐神器...

    新春佳节到了,小编的头条号不能发红包给各位爱粉,就在此带给大家一份工具是一款为数不多的真正意义上的石皮解版,需求量非常非常大. 近期官方推出了新版本,今天又是一次性给大家带来安卓.苹果.PC三大系统的 ...

  8. xy苹果助手未受信任_苹果试图关闭iOS12.4系统,要越狱请赶紧

    说重点:昨天Pwn20wnd越狱大神终于发布了iOS12.4越狱工具,整个越狱论坛以及社区,都热闹了起来,万万没想到,iOS12.4越狱来得那么快,注意!只支持iOS12.4越狱,iOS12.3~12 ...

  9. xy苹果助手未受信任_苹果手机怎么设置信用软件

    当我们的苹果手机的系统升级到ios9系统时,我们点击手机中的某个APP软件,有时候桌面会弹出此软件未受信任的对话框,如果遇到这种情况该如何解决,下面就为大家带来苹果手机怎么设置信用软件的解决方法. 苹 ...

  10. Hbuilder 真机运行显示未受信任的解决方法(ios)

    Hbuilder 真机运行显示未受信任的解决方法(ios) 参考文章: (1)Hbuilder 真机运行显示未受信任的解决方法(ios) (2)https://www.cnblogs.com/wenx ...

最新文章

  1. 干货|建议初创团队起初也要构建分布式应用
  2. 什么软件测试身高体重标准,测测你的身高体重指数(BMI)正常吗?
  3. (chap 2 简单的Http协议) HTTP性能优化之Cookie技术
  4. 跨网段远程调试vs_如何提高后台服务应用问题的排查效率?日志 VS 远程调试
  5. 知识付费不热了,得到们接下来故事怎么讲?
  6. python __main__ __name__ __file__
  7. 二线城市,存款多少可以退休?
  8. 【css】谈谈 css 的各种居中——读编写高质量代码有感
  9. 太牛逼了!这个开源项目,可以把我从视频中移除!
  10. VS附加依赖项以及Opencv配置问题
  11. python return多个值_Python函数中如何返回多个值?
  12. 官网链接下载QT5 Creator
  13. MATLAB基本语法
  14. 指纹识别算法的matlab实现
  15. sql-server(模式创建)
  16. linux用户登陆报错Resource temporarily unavailable
  17. 待办事项桌面插件,办公族的桌面帮手
  18. Skype for Business 中的键盘快捷方式
  19. java 笔记本i7 i5_笔记本i5处理器和i7处理器哪个好
  20. python自学-class14(down)-窗口界面的设计基础

热门文章

  1. 厦门大学LaTeX毕业论文模板:中英文双目录
  2. Instagram 图谱 API
  3. Flash地址空间的数据读取——STM32
  4. 【MATLAB-app】appdesigner 灰色区域 代码 如何修改?
  5. Eclipse的MAT的支配树
  6. 网络通信学习(四)——通过接入网进入互联网内部,探索接入网和网络运营商
  7. 高质量C++/C编程指南(第11章 其它编程经验)
  8. 【Kay】Java多线程
  9. 观阿凡达水之道之感想
  10. Liferay门户应用前景分析