美文网首页iOSiOSiOS 知识点
关于iOS签名机制的理解

关于iOS签名机制的理解

作者: egoCogito_panf | 来源:发表于2016-01-31 14:07 被阅读7626次

          从事iOS开发将近两年了,日常的精力主要放在公司的业务上,最近决定开始写一些技术方面的东西,记录自己今后的学习历程,也希望和爱好移动开发的朋友多多交流学习。

          下面切入正题,以前对iOS的签名机制不太了解,只知道配置个开发者证书用于调试和打个企业包什么的,遂花了点时间去学习一下iOS的打包签名机制,由于初学,本文的不足或是错误之处,还望多多批评指教。

    一、非对称算法和数字签名

          区别之前的对称加密算法(加密解密用的是同一个秘钥),非对称加密算法需要两个秘钥,即公钥和私钥来进行加密和解密,它俩是成对出现的,如果用公钥加密的内容,只有对应的私钥才能解密,反之,用私钥加密的内容,只有对应的公钥才能解密。相对于对称算法,该算法安全性高,只要私钥不泄露,就能保证通信双方的安全,缺点是加密和解密花费时间长。例如HTTPS协议在SSL层就用到了非对称算法。

          数字签名是一种对数字内容进行校验的方法,它首先对内容使用摘要算法(例如MD5算法)生成一段固定长度的文本,可以理解为原内容的摘要,然后利用私钥加密摘要,得到原内容的数字签名。接受方同时接收到与原内容和数字签名,首先用相同的摘要算法生成原内容的摘要(摘要1), 同时用公钥解密数字签名,得到摘要2,然后比较摘要1和摘要2,若相同,则验证原内容有效。具体流程如图1.1:

    1.1 数字签名

    二、申请数字证书

    数字证书是苹果公司数字签名后的数字化证书,是iOS系统校验App的核心。以下是数字证书的申请过程:

    1、开发者首先在keyChain中生成一个证书申请文件(CertificationSigningRequest,简称CSR),该文件包含开发者的信息、公钥、公钥加密算法和摘要算法,在这个过程中,首先会产生一个开发者使用的私钥,保存在keyChain中。

    2、开发者上传CSR文件给Apple的MemberCenter(简称MC),苹果公司会根据该文件生成一个证书,包含两部分,即证书的内容和一段Apple的数字签名,如下图:

    1.2 证书内容

    数字签名是苹果利用自己的私钥加密证书内容摘要得到的,是为了验证证书的有效性。iOS系统本身装有苹果公司的公钥,并通过图1.1的方式进行校验,如果摘要一致,证明数字证书的有效。苹果提供的证书有开发、调试证书,企业版发布证书,上架和AddHoc证书,类型不同,功能亦不相同。如果是团队开发,可以将证书导出生成.p12文件给其他人安装。

    三、描述文件(mobileprovision)

    描述文件也是通过苹果的MC下载得到,里面包含了证书、AppId和设备UDID,除了这些还有授权信息,规定了App能够使用的服务有哪些。

    四、App打包签名、校验

          Xcode在打包生成ipa文件的过程中,利用当前证书的私钥进行代码、资源文件的数字签名,并且将其存放在ipa文件夹的_CodeSignature文件夹下,图1.3是ipa文件的结构图。当App安装到iOS系统上时,系统首先通过描述文件找到数字证书,通过证书里的苹果数字签名,验证证书的有效性,如果证书有效,取出证书中的开发者公钥,解密App的数字签名,如果发现摘要一致,则验证通过,App成功安装在手机上,其中一个环节有问题,验证工作就失败,图1.4是校验过程。

    1.3 ipa包内容


    1.4 校验App

    五、相关参考

    代码签名探析

    iOS Code Signing 学习笔记

    漫谈iOS程序的证书和签名机制

    相关文章

      网友评论

      • 臭码农:iOS企业签名,企业证书出租,企业账号出售,Web APP打包,APP上架,欢迎垂询 Q: 49900037:sparkling_heart:
      • 76cb21cab43c:借贵宝地打个广告 苹果app企业证书签名 ios棋牌游戏直播签名 ipa封装签名证书打包 扣1050839311
      • 97aed2910e76:借宝地打个广告,苹果app证书签名 ios棋牌游戏签名 网页封装应用分发 代ios签名,长期稳定,服务期内免费续签QQ:245208975
      • 悟空在线:提供企业签名服务欢迎咨询:qq/wx:1515835306
      • 47fb5d6e72d8:借贵宝地打个广告 有需要企业签名的联系我 p12证书租赁 QQ 332890425
      • 4b4d42e9a1bb:应该是iOS的,写成小写看着好不习惯,能不能改一下
        iOS_渔翁:我对这个也特别认真,总感觉写规范了才是对职业的尊重,小写i大写OS,:joy: :joy: :joy:
      • UItachi:以上是ipa生成时候的校验。能解释一下APNs数字证书的有效过程吗?一直都没太理解。

      本文标题:关于iOS签名机制的理解

      本文链接:https://www.haomeiwen.com/subject/pbxskttx.html