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

完整文章列表:
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包中包含什么内容:


iOS的签名与证书机制(四):iOS的签名_第1张图片
ipa包内容.png
  • .mobileprovision文件(开发者账号配置完毕后生成)
  • App内容(xib,图片资源,mach-o等等)
  • 签名证书文件

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


编译流程.png

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


iOS的签名与证书机制(四):iOS的签名_第2张图片
iOS签名流程.png

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


    iOS的签名与证书机制(四):iOS的签名_第3张图片
    安装前的验证.png

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

  1. 在创建证书之前,我们需要上传一个CertificateSigningRequest.certSigningRequest文件,这个就是Mac的公钥,虽然没有显示,Mac的私钥也同时产生了.
    公钥上传到Apple服务器,经过Apple私钥签名,生成证书供我们下载;
    iOS的签名与证书机制(四):iOS的签名_第4张图片
    生成Mac公钥.png

    iOS的签名与证书机制(四):iOS的签名_第5张图片
    生成证书.png
  2. 在配置好AppID,DeviceID后,生成.mobileprovision文件,然后下载到本地使用;
    iOS的签名与证书机制(四):iOS的签名_第6张图片
    生成.mobileprovision文件.png
2. 从Appstore下载安装

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

iOS的签名与证书机制(四):iOS的签名_第7张图片
Appstore下载安装.png

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


iOS的签名与证书机制(四):iOS的签名_第8张图片
葫芦娃.png

你可能感兴趣的:(iOS的签名与证书机制(四):iOS的签名)