新闻中心

三步快速讲解海拔iOS签名验证流程

  • 时间:
  • 浏览:150
  • 来源:怪兽分发

 

今天小编通过3大步骤简单介绍一下iOS签名验证流程:

一. 证书申请

用我们自己的机器生成 CertificateSigningRequest.certSigningRequest 文件,在生成的过程中会产生一对公钥和私钥,私钥已经保存在我们的机器上,这个文件包含了我们的公钥,具体内容如下:

申请者信息,此信息是用申请者的 私钥 加密的。

申请者公钥,此信息是申请者使用的 私钥 对应的公钥。

摘要算法和公钥加密算法

上传 CertificateSigningRequest.certSigningRequest 到 MemberCenter 。 MemberCenter 根据获取到的 公钥 和我们的用户信息,通过 Apple 自己的私钥进行数字签名生成证书,这个证书可以通过安装 Xcode 过程中安装的根证书进行验证。具体证书包含内容如下:

用户的公钥

用户信息

证书机构名称

证书有效期

苹果数字签名 : 通过根证书验证以上信息

下载生成的证书,双击安装就会出现在 钥匙串 中, 钥匙串 会根据证书中的公钥对应上本机器上的私钥。

二. 打包签名

在 MemberCenter 上生成 mobileprovision 下载安装, mobileprovision 包含如下信息:

appid: 每个 app 在 MemberCenter 创建的对应的 id 。

包含哪些证书: 不同证书对应不同功能。

功能授权列表

可安装的设备列表: iOS设备的UDID列表,发布证书应该是通配。

苹果数字签名: 苹果用来验证以上的信息。

通过 Xcode 指定要使用的证书,其实是 指定了签名过程中要使用的 私钥 ,这个私钥是和证书中的公钥相对应的。然后指定对应的 mobileprovision ,由于 mobileprovision 文件中包含了证书,实际上本地证书就是 Xcode 用来指定对应 私钥 用的。

最后通过指定的私钥对需要签名的数据进行数字签名(编译过程在签名之前,这里省略了编译过程,编译后的二进制文件也是要签名的内容),最终将 ipa 包的形式输出, ipa 的文件结构如下:

资源文件: 例如图片、html、等等。

_CodeSignature/CodeResources: plist文件,内容是包内所有数据的数字签名。

可执行文件: 编译后的二进制文件。

mobileprovision: 我们之前通过Xcode指定的包含了证书的文件。

Frameworks: 程序引用的非系统自带的Frameworks。每个Framework的结构跟app其实差不多

三. 验证安装

解压 ipa 包,获取 embedded.mobileprovision ,通过设备上的 Apple 公钥验证该文件的完整性和安全性。

embedded.mobileprovision 文件验证通过,获取该文件内的用户证书,再通过设备上的 Apple 公钥验证该证书的完整性和安全性。

证书验证通过后,获取证书内的我们开发者的公钥。然后通过开发者的公钥验证应用程序包内的数据的完整性和安全性。通过后即可安装。

ios企业签名 www.52ez.cn