关于App签名的步骤

时间:2024-05-22 17:44:07

前景介绍

之前有自己去做过上架,也去了解了下这方面的知识,最近也继续的去了解了一下,这边也想自己总结下。

我们如果要上架肯定是少不了证书的签名的,我们配置证书也是要在苹果官网来进行的,一般的步骤是这样子的

具体分析

  • 先去keychain中去选择从证书颁发机构去请求证书,这样的话就会在本地生成了一个公钥,一个私钥,在CertificateSigningRequest.certSigningRequest文件中就是存储了公钥和开发者的一些信息,然后私钥是保存在我们自己的电脑中的。
  • 之后我们就会把CertificateSigningRequest.certSigningRequest文件上传到苹果后台去生成证书,这个时候苹果会返回给我们的就是一个CER证书,可供我们去下载。
  • 当我们去下载完成之后,并双击打开后,这个文件会出现在钥匙串里。它与本地钥匙串里的私钥匹配之后,开发者就可以使用它了
  • 当我们在Xcode中去选择了下载回来的证书的时候其实是会去找keychain中的私钥去对app进行编译签名的,如果我们希望自己的证书也要给其他电脑用,并且希望其他电脑也可以对这个APP进行编译签名的话,我们一般会给证书做个备份,这个备份就是个P12文件。这个p12文件,它不仅包含CER的信息,还有私钥信息,即: P12备份文件 = CER文件 + 私钥;所以有了这个p12文件和与CER证书对应的描述文件也就是mobileprovision文件,其他电脑也可以进行编译签名了。
  • 之后我们再去配置AppID、权限、设备等等,然后最后我们会去下载Provisioning Profile文件
  • 最后呢其实Xcode会把之前生成的证书文件,会在本地找到私钥,然后进行对App进行签名,并且会把Provisioning Profile文件命名为embedded.mobileprovision然后一起打包进去

    其实embedded.mobileprovision文件中存放的就是你App的名字、平台、UUID以及支持的设备信息也就是我们在苹果官网自己进行设置的调试设备。
    以及需要注意的是Provisioning Profile文件当中有很多额外信息,实际上这个文件中除了设备ID/AppID信息等信息还有App里iCloud、push、后台运行 等权限苹果都是会进行控制,苹果把这些权限开关统称为Entitlements,它需要通过签名去授权。

    简单的总结

    1、 CertificateSigningRequest:证书请求文件,包含了公钥
    2、 .p12:包含了本地私钥,可以导入到其他电脑进行使用
    3、Provisioning Profile:包含了证书/Entitlements 等数据。
    4、Entitlements:里面有的就是App的权限开关列表

在安装App的时候,系统会通过内置的公钥 B,去验证embedded.mobileprovision的数字签名是否正确,验证证书后确保了公钥A是苹果认证过的,再用公钥A去验证经过私钥A进行过的APP 的签名。

验证步骤验证其实好包括去验证设备 ID 是否在手机ID 列表上,如果不在的话就有可能发送闪退,然后再看AppID 是否对应得上,权限开关是否跟 APP 里的 Entitlements 对应等等。

关于App中的证书的话其实就是,允许安装的设备 ID 列表 和 App对应的 AppID 等数据,都在第三步这里跟公钥A一起组成的证书。这些信息其实都在embedded.mobileprovision这一个文件当中。

关于App签名的步骤

其实我们通过个人开发者证书,能够去真机调试App也是有一个embedded.mobileprovision文件的。需要注意的是这里通过个人开发者证书安装的App,只有7天有效期,可以在embedded.mobileprovision有很醒目的过期时间
关于App签名的步骤