美文网首页Interview
iOS的签名与证书机制(四):iOS的签名

iOS的签名与证书机制(四):iOS的签名

作者: Calabash_Boy | 来源:发表于2019-03-15 15:04 被阅读0次

    完整文章列表:
    iOS的签名与证书机制(一):加密解密
    iOS的签名与证书机制(二):单向散列函数
    iOS的签名与证书机制(三):数字签名与证书
    iOS的签名与证书机制(四):iOS的签名

    iOS签名机制的目的是保证安装到用户手机上的App都是经过Apple官方允许的;
    把App安装到用户手机上目前有两个途径,

    • 通过ipa包安装,包括Xcode调试,TestFlight等等.
    • 用户从Appstore下载安装到手机

    这两种途径对应的签名机制不太一样,我们会分开说明;

    1. 使用ipa包安装

    我们在真机调试App,或者打包上线App之前,都需要在开发者账户中配置下面的内容,

    • 使用Mac设备生成CertificateSigningRequest.certSigningRequest文件;
    • 获得ios_development.cer或者ios_distribution.cer证书;
    • 添加device的UDID,添加App的BundleID;
    • 获取最终的.mobileprovision文件;

    Apple为什么要设计这些文件与步骤,它们的内容和作用是什么呢?
    我们先来看一个ipa包中包含什么内容:


    ipa包内容.png
    • .mobileprovision文件(开发者账号配置完毕后生成)
    • App内容(xib,图片资源,mach-o等等)
    • 签名证书文件

    我们再来看看编译生成ipa包Xcode做的事情:


    编译流程.png

    我们可以看到在编译完App的内容文件后,还需要进行Sign操作,然后生成上述的签名证书文件;
    下面来剖析整个签名的流程;


    iOS签名流程.png
    在整个流程中,有两个密钥对,一个是Mac的公钥与私钥,一个是Apple的公钥与私钥,要说明的是:
    • 每台iPhone设备中已经有了Apple的公钥;
    • 从第5步解析解析出的AppID等信息,会与App本身的内容进行对比验证,如果不一致,也不会安装成功;


      安装前的验证.png

    看完了流程图,我们再通过实际的操作来对应说明一下:

    1. 在创建证书之前,我们需要上传一个CertificateSigningRequest.certSigningRequest文件,这个就是Mac的公钥,虽然没有显示,Mac的私钥也同时产生了.
      公钥上传到Apple服务器,经过Apple私钥签名,生成证书供我们下载;
      生成Mac公钥.png
      生成证书.png
    2. 在配置好AppID,DeviceID后,生成.mobileprovision文件,然后下载到本地使用;
      生成.mobileprovision文件.png
    2. 从Appstore下载安装

    如果用户是直接从Appstore下载的App,因为不涉及到Mac电脑这一角色,因此没有Mac的密钥对,验证签名的流程就相对简单;如果使用iFunbox查看下载的ipa包,是没有.mobileprovision文件的.

    Appstore下载安装.png

    好了,看完最终章,不知道小伙伴是否对iOS签名有了一些了解呢?有想法的话,请下方留言.


    葫芦娃.png

    相关文章

      网友评论

        本文标题:iOS的签名与证书机制(四):iOS的签名

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