iOS 应用签名

作者: 有梦想的程序员 | 来源:发表于2019-10-18 09:45 被阅读0次

在iOS系统出来之前,我们的主流操作系统(Mac/Windows)上任何地方下载的软件都能运行,系统安全存在隐患,那么苹果希望解决这样的问题,要保证每一个安装到 iOS 上的 APP 都是经过苹果官方允许的,所以就有了iOS的应用签名。

1、什么是应用签名?

顾名思义,应用签名就是对应用的签名,对应用中可执行文件或脚本数据(其实就是代码)进行一次Hash,然后再进行一次RSA加密后获得的结果。这就是苹果用来确认软件在签名后未被修改或损坏的措施。

2、苹果是如果验证应用签名的?

苹果给了用户一个基本的验证方式,在iOS系统中内置一个公钥,私钥由苹果后台服务器保存,当开发者将开发的App上传到AppStore的时候,苹果用暴力且直接的方式用服务器的私钥进行签名(这就是平常我们看到我们上传到AppStoreApp显示处理中的原因),用户从手机上的AppStore下载应用后,iOS系统使用公钥验证这个签名是否正确,如果签名正确,说明这个App是由苹果后台认证且没有修改过的,这样就保证了每一个App都是经过苹果官方允许的。

3、上述签名方式有什么问题?

如果我们iOS设备安装App只从App Store这一个入口这件事就简单解决了,但是开发者肯定需要进行真机调试,还有企业内部分发的渠道,那这些就不能解决了。

4、苹果的双层签名方式

对于开发者来说 安装包不需要上传到App Store,可以直接安装到手机上,但是苹果又为了保证系统的安全性,必须对安装的APP有绝对的控制权,不能被滥用导致非开发APP也能被安装。

为了实现这些需求,iOS签名的复杂度也就开始增加了,苹果这里给出的方案是双层签名。

我们需要将我们开发阶段的App安装到手机上时,苹果就给开发这提供了申请证书的方式。

双层签名.png

我们的Mac电脑上生成一对公钥M私钥M,然后将公钥M打包成CSR文件上传到苹果服务器,苹果服务器使用保存在服务器上的私钥A公钥M进行非对称加密后就会得到一个开发者证书,证书中包含的是被加密的公钥M,这个证书也就是我们常说的p12文件。

在开发阶段我们想把App安装到手机上,在Build的时候,Mac就会使用私钥MApp进行一次签名,然后把我们从苹果服务器请求回来的证书一起打包到我们的App中,这时候iOS操作系统就会使用公钥A对打包到App的证书进行解密,如果验证成功了说明是苹果允许安装的。

然后使用公钥A对证书中加密的公钥M进行解密,验证当前App的签名,这样就完成苹果的双层验证,既能保证了是苹果允许安装的,还能验证是不是我们开发的App

5、描述文件的产生

苹果为了保证安装的设备是苹果允许的的设备和限制安装的设备数,在向苹果申请证书的时候,苹果会返回一个包含证书的描述文件。

在我们开发的时候Xcode会向苹果申请描述文件。

Xcode申请描述文件

可以使用Finder 的前往打开,文件存放位置 ~/资源库/MobileDevice/Provisioning Profiles/

描述文件的位置

描述文件中会有证书的信息,授权设备的信息,申请的时间,过期的时间等等。

我们看一下这个证书,终端进入当前证书的文件夹,输入指令security cms -Di embedded.mobileprovision ,我们发现描述文件其实就是一个plist

以上是就是iOS应用签名和应用签名的验证。

相关文章

  • IOS 逆向开发(四)App重签名

    1. 应用签名 应用签名原理回顾 上一篇博客“IOS 逆向开发(三)应用签名”中详细讲解了IOS 应用签名,证书的...

  • 10 - 应用签名原理和重签名实操

    iOS应用签名 什么是iOS应用签名? 在iOS出来之前,主流的操作系统(MacOS/Windows)软件随便从哪...

  • iOS开发逆向之应用重签名(上)

    本文主要介绍重签名的几种方式,以及如何对应用进行重签名, 应用重签名 从之前《iOS逆向应用签名》中可知,签名是指...

  • iOS签名机制

    应用签名的原理iOS APP签名机制详解iOS逆向之旅(基础篇) — App的签名机制【Xcode是如何将App安...

  • IOS 逆向开发(三)应用签名

    @[TOC](IOS 逆向开发(三)应用签名) 1. 数字签名 什么是数字签名? 数字签名(digitally s...

  • iOS 测试包

    若想测试iOS开发完成的应用需先给应用进行签名,进行签名则先要申请证书,不同的测试方式需要不同的证书。 测试iOS...

  • 通过Shell脚本对应用重签名

    通过上两篇文章(iOS 应用重签名|使用Xcode简化应用重签名)对操作应用的重签名有了一定的认识,但是好像每次都...

  • iOS 签名流程

    iOS签名 iOS开发时真机测试、AdHoc、应用上架,我们都需要先到官网下载证书。这一过程其实就是iOS签名机制...

  • iOS 应用签名

    在iOS系统出来之前,我们的主流操作系统(Mac/Windows)上任何地方下载的软件都能运行,系统安全存在隐患,...

  • iOS应用签名

    一、代码签名 代码签名是对可执行文件或脚本进行数字签名。用来确认软件在签名后未被修改或损坏的措施。和数字签名原理一...

网友评论

    本文标题:iOS 应用签名

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