苹果双向签名机制

蒲公英少年IP属地: 辽宁
1字数 909阅读 1,379

iOS开发同学都知道我们想要把开发好的App安装到手机(真机)上测试,需要有对应的开发者证书和描述文件才行,其实这里面就涉及到了苹果的双向签名认证机制。苹果的双向签名机制主要用到了非对称加密RSA以及哈希算法的知识,了解这个机制之后,我们会发现苹果还是非常聪明的。了解这个机制之前,建议大家先熟悉苹果开发者证书和描述文件的申请流程,不熟悉的朋友可以到我之前的文章了解一下传送门

接下来我们就一步一步的来分析苹果的双向签名机制:

一、我们知道RSA加密的是需要一对秘钥(公钥和私钥)的,公钥加密,私钥解密,反过来也成立。苹果利用RSA加密机制在服务器端存放一个私钥(为了方便描述,我们称为私钥A),在iOS系统端存放一个公钥(和私有对应,这里称为公钥A),因为服务器和iOS系统都是苹果的,所以这个很容易做到。

二、当我们通过CSR文件去申请证书时,此时Mac系统帮我们生成了一对秘钥:公钥M和私钥M,并将公钥M放在CSR文件中到苹果服务器申请证书。


1-1.png

2-4.png

三、苹果服务器收到CSR文件后,用服务器的私钥A对公钥M进行签名得到一串HASH值,并用公钥M将公钥M和HASH值一起生成一份cer证书文件,然后我们下载到电脑上双击打开会加载到钥匙串中。之后将钥匙串中的证书导出p12文件给到其他开发者,那么其他开发者才能有权限进行真机安装调试了。


2-7.png

2-10.png

四、等到我们打包编译的时候,Xcode会根据登录的开发者账号从苹果服务器拉取对应BundleID的描述文件(其中包含设备ID列表、App ID、权限文件以及cer证书等),再用Mac电脑上的私钥M对App的资源文件和可执行文件MACHO进行签名,最后将描述文件、签名文件、以及MACHO文件等一起打包成ipa文件(注意:ipa文件实际上就是Zip文件)。


2-2.png

五、当我们在手机上安装App的时候,iOS系统首先用公钥A去解密证书,成功后得到公钥M,这一步的解密动作也是验证此证书是否是苹果服务器颁发的证书,验证了这个证书是苹果允许的。然后再拿解密得到的公钥M对App进行解密来验证此App是否是当前这个证书允许的,从而间接的验证了这个App是苹果服务器允许安装到手机的。其中,如果证书类型是发布证书,则是直接安装的(当然这是AppStore的安装方式);如果证书是开发证书,则需要去验证一下当前手机设备是否是允许安装的设备,通过后才能将App安装到手机上。最后附一张流程图,帮助大家理解~


苹果双向签名.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
12人点赞
更多精彩内容,就在简书APP
"如果你觉得我的文章对你有所帮助,记得点击喜欢和关注哦! 我会持续更新简书文章,和大家共同进步!"
还没有人赞赏,支持一下
蒲公英少年iOS 探索之路,慢慢学习,循序渐进!
总资产162共写了4.5W字获得1,081个赞共265个粉丝

推荐阅读更多精彩内容

  • 一、部分概念 数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发...
    绿叶竹林阅读 870评论 0 0
  • 一图简单了解苹果签名机制 a.Mac电脑通过钥匙助手生成CSR文件(公钥)并生成对应私钥,并通过苹果开发者中心生成...
    alitan2015阅读 310评论 0 0
  • 双向签名: 手机和苹果服务器还有开发人员的MAC电脑,他们一共维护着2对公私钥,利用这两对公私钥分别完成双向签名与...
    铸造中阅读 1,563评论 0 2
  •   了解iOS的双向签名,涉及到有三个设备端(Mac电脑,苹果服务器,iPhone手机)。应用需求是因为苹果的应用...
    spyn_n阅读 445评论 0 3
  • 服务器:签名iOS手机:验证 双层签名Mac电脑(公钥M 私钥M)服务器(私钥A)iPhone手机(公钥A) 1....
    竹屋听雨阅读 160评论 0 0