本文介绍: 关于前置基础概念需要参考加密签名证书的基础概念和流程众所周知 iOS 无论开发发布需要一堆的证书,那么每个证书的作用是啥呢,它是怎么生成的呢,就是本章主要了解的内容。Apple 本身就是 权威 的CA证书认证机构。一、证书列表开发中必须包含有以下几种证书:Mac上生成CertificateSigningRequest.certSigningRequest文件上传刚刚的.certSigningRequest文件 生成 ios_development.cerios_distribu

关于前置基础概念: 需要参考加密、签名、证书的基础概念和流程

众所周知 iOS 无论开发发布需要一堆的证书,那么每个证书的作用是啥呢,它是怎么生成的呢,就是本章主要了解的内容
注:Apple 本身就是 权威 的CA证书认证机构。

一、证书列表

开发中必须包含有以下几种证书:

二、全景大图-看全局

我们先看一张大图,然后来逐步讲解

在这里插入图片描述

三、钥匙列表

主要使用到钥匙角色有。

四、 .certSigningRequest 文件

在这里插入图片描述
这一步生成 CertificateSigningRequest.certSigningRequest文件 就对应者Mac设备公钥,关于私钥的位置我们不关心。

五、 cer 证书

在这里插入图片描述
将上一步的 .certSigningRequest 上传到Apple 官网后,Apple 会用自己的 私钥,对上传文件(其实是Mac公钥)进行签名
然后得到 .cer证书。
.cer证书包含有 Mac的公钥+签名+Mac的相关信息

也就是对应大图里面的 :
在这里插入图片描述

六、 .mobileprovision文件 (也就是pp证书)

在这里插入图片描述
这一步会让我们选择 刚刚的 .cer证书 + App ID + 安装设备(Appsore发布渠道没有这个选项
然后 apple 用自己的 私钥对其 进行签名。最终生成 pp证书

注:
App ID 里面包含有 当前 application所有权信息等。

也就是对应大图里面的 :

在这里插入图片描述

同理可以看出 pp文件包含有 cer文件的所有信息

七、 ipa 包内的文件内容

我们将 后缀为 .ipa 的文件更改 后缀为 .zip 然后进行解压
可以看到如下结构
有三部分组成: CodeResources + pp + 其他

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>files</key>
	<dict>
		<key>AppIcon20x20@2x.png</key>
		<data>
		4ks7eY796HDUyqe3inCSmyrYWus=
		</data>
		<key>AppIcon20x20@2x~ipad.png</key>
		<data>
		4ks7eY796HDUyqe3inCSmyrYWus=
		</data>
		<key>AppIcon20x20@3x.png</key>
		<data>
		NPu1GSfNuEUrnv4Xv66KqOijUmw=
		</data>
		<key>AppIcon20x20~ipad.png</key>
		<data>
		xaqeRlvoMr4z4838PEXoH2pg5h4=
		</data>
		<key>AppIcon29x29.png</key>
		<data>
		2bwmXULR6f8MkodULuPJdsVhi8Q=
		</data>
		......
  • pp文件包含了,app权限appID, cer证书(mac 公钥)。

也就对应着大图的里面的 这个部分,代表 ipa 文件的组成部分。
在这里插入图片描述

八、 整个过程

在这里插入图片描述
我们再把第二部的大图拿过来,通读一遍。
按照图中的 1-6的步骤

  1. 将所有的 app 文件 进行hash后 再用mac 私钥进行加密。 生成 CodeResources文件。
  2. apple官网mac的公钥(.certSigningRequest文件)用 apple 私钥签名。 生成.cer 证书
  3. 将2的.cer证书 和 devicesappidapp权限,再用apple 私钥进行签名。生成pp文件,并将pp文件一并放入ipa包里面。
  4. 在iOS设备上,用apple 公钥验证pp文件的签名。并对当前app设备id权限进行逐一校对, 如果有一项不通过,则安装失败
  5. 在iOS设备中,开始运行时,同样用apple 公钥对第4步取出的cer证书进行验证,取出 Mac公钥。 如果失败运行失败
  6. 在iOS设备中,开始运行时,用第5步的Mac 公钥对第1步生成CodeResources文件进行解密判断文件是否被篡改, 并将取出的所有文件的hash值进行 一一核对。如果有一项不通过,则代表有问题

备注:部分笔记包含有MJ老师的学习资料

原文地址:https://blog.csdn.net/goldWave01/article/details/122587108

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_8209.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注