iOS签名原理

121631619312_.pic.jpg
  1. 每个mac上都会有一对公私钥
  2. 当我们申请证书时,会将公钥M通过csr 传给苹果服务器
  3. 苹果服务器讲公钥M 经过apple 私钥A加密然后生成证书
  4. app打包,Xcode会利用codesign工具,用私钥M给app签名(包括资源签名,代码签名)
  5. 每台手机会在操作系统内置一个跟苹果服务器私钥A,对应的公钥A
  6. 当iPhone 要安装app时,会用公钥A解密app内的证书得到公钥M
  7. 用解密得到的公钥M验证签名是否合法,是否是官方认证的

其实上边的流程是有问题的
那么经过签名的app可以安装在任意一台手机上,这是苹果不愿看到的,所以就有了mobileProvisioning profile 文件,里边包含了appid 在苹果后台注册过的设备,以及包含的证书. 只有对应的app和注册过的设备才能安装在iPhone上(上线appstore,企业签名除外).

流程变成了如下图:


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

推荐阅读更多精彩内容

  • ## RSA ### 获取公私密钥 1. 生成公私密钥 pub和priv >>> import rsa >...
    qlh831阅读 4,075评论 0 1
  • 什么是数字签名 首先计算出需要签名数据的HASH值,通过RSA将HASH值加密,就是数字签名。 什么是代码签名 对...
    Mr_Coder阅读 2,425评论 0 0
  • 一、加密解密 1. 密码相关 1.1 简介 根据对加密和解密使用的密钥方法,可以将密码分为2种: 对称密码:加密用...
    CoderJRHuo阅读 4,007评论 0 0
  • 为什么要签名? 保证这个APP是经过苹果官方授权的 iOS签名原理 MAC端生成CSR文件(公钥M)创建CSR文件...
    lieon阅读 4,003评论 3 10
  • 应用签名我们从三个方面来进行讲解 1.代码签名 2.双层代码签名 3.描述文件 一代码签名 代码签名是对可执行文件...
    yuanfeiyang阅读 4,666评论 0 2