iOS 签名机制

一直都没有细想过苹果的签名机制,今天突然间想到,所以研究了一下,在此记录,作为学习资料使用。如有问题,欢迎留言订正~

因为苹果的安全策略,通过签名机制保证手机上的每个APP都是经过苹果认证的。ioser都知道苹果的APP安装方式有四种:
1.通过App Store安装
2.开发者通过xcode安装
3.Ad-hoc测试证书打包的APP,数量限制100
4.In-house 企业版证书打包的APP,信任企业证书后可以使用

一. 通过App Store安装的APP

通过App Store安装
  1. 由苹果生成一对公私钥,公钥内置在iOS设备中,私钥由苹果保管。
  2. 开发者上传APP给苹果审核后,苹果用私钥对APP数据进行签名,发布至App Store。
  3. iOS设备下载APP后,设备内公钥进行验签,若正确,则证明该APP是苹果认证过的。

二. 通过xcode安装(真机调试)

由于真机调试时不需要提交苹果审核,所以苹果无法对APP进行签名,因此,苹果采用了双重签名的机制,Mac电脑上有一对公私钥,苹果还是原来的一对公私钥。

  1. 开发过程中需要真机调试时,需要从钥匙串中的证书中心创建证书请求文件(CSR),并传至苹果服务器。
  2. 苹果使用私钥对CSR签名,生成一份包含Mac公钥信息及Apple对它的签名,即证书(CER:开发证书或者发布证书)
  3. 编译完一个APP 后,Mac电脑使用私钥对App进行签名。
  4. 在安装APP时,根据当前配置把CER证书一起打包进App。
  5. iOS设备通过内置的Apple的公钥验证CER是否正确,证书验证确保Mac公钥是经过苹果认证的。
  6. 再使用CER文件中Mac的公钥去验证App的签名是否正确,确保安装行为是经过苹果允许的。

三. 通过Ad-hoc正式打包安装

Xcode打包App生成ipa文件,通过iTunes或者蒲公英等第三方发布平台,安装到手机上。流程上同真机调试相同,差别在第四步:

  1. 开发过程中需要真机调试时,需要从钥匙串中的证书中心创建证书请求文件(CSR),并传至苹果服务器。
  2. 苹果使用私钥对CSR签名,生成一份包含Mac公钥信息及Apple对它的签名,即证书(CER:开发证书或者发布证书)
  3. 编译完一个APP 后,Mac电脑使用私钥对App进行签名。
  4. 编译签名完成后,要导出ipa文件,导出时,需要选择一个保存的方法:App Store,Ad-hoc,Enterprise,Development,就是选择将上一步生成的CER一起打包进App。
  5. iOS设备通过内置的Apple的公钥验证CER是否正确,证书验证确保Mac公钥是经过苹果认证的。
  6. 再使用CER文件中Mac的公钥去验证App的签名是否正确,确保安装行为是经过苹果允许的。

四. In-House企业版证书打包

企业版证书签名验证流程和Ad-Hoc差不多,只是企业版不限制设备数,而且需要用户在iOS设备上手动点击信任证书。

该文章参考地址:https://www.jianshu.com/p/7806ea264aea,只为自己学习使用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为苹果的安全策略,通过签名机制保证手机上的每个App都是经过苹果认证的。 App的安装方式有四种: 通过App ...
    luonaerduo阅读 987评论 0 0
  • 级别: ★★☆☆☆标签:「iOS」「Apple」「签名机制」作者: 忆思梦审校: QiShare团队 前言补序:本...
    QiShare阅读 7,711评论 0 48
  • 转载至:http://www.cocoachina.com/ios/20181221/25913.html 因为苹...
    零零后de杜子腾阅读 316评论 0 0
  • 转载至:http://www.cocoachina.com/ios/20181221/25913.html 因为苹...
    坤哥爱卿阅读 494评论 0 1
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 7,287评论 0 3