专业IOS签名团队
闪电售后,性价比秒杀上架,快速上线、测试
提供 iOS 企业证书签名服务,让您的 iOS App 无需提交 App Store 或设置
UDID 即可在iPhone、iPad 等设备上直接安装,帮助您快速完成应用内测
过程,降低测试成本,缩短上线时间。

ipa企业签名应用程序的代码的来龙去脉

2019-07-05 08:16 栏目:ipa企业签名 查看()

如果您觉得您需要在代码签名/ APNS知识数据库上进行更新,那么请在这个相对较长的关于ipa企业签名,配置和其他简洁主题的旅程中与我一起开始。

如果你是其中一个只喜欢外卖的家伙,我会让你满意;)

介绍

在PKI(私钥基础设施)a中Certificate signing request CSR,申请人生成CSR以发送给证书机构。生成CSR之前申请人必须生成Private和Public密钥对。

根据您使用的安全算法生成对时,您要么最终得到一个包含私钥/公钥密钥的文件,要么只使用私钥,以防您使用允许创建公共的算法来自私钥的密钥。

除了关键持有者的一些信息之外,私钥是保密的,而公钥是嵌入在CSR内部的。最终的CSR使用私钥签名并发送给证书颁发机构CA。

然后,CA将验证CSR,如果它通过,它将发回一个用证书颁发机构签名签名的身份证书,这个新创建的证书据说由CA颁发。

除了有关密钥持有者的信息(电子邮件,姓名等)之外,身份证书还包含公钥。

如果需要,ios签名证书颁发机构可以存储您的公钥的副本以生成将来的身份证书。

要了解签名过程,应涵盖以下主题:

  • 签署身份
  • 供应资料
  • 代码签名
  • APNS

签署身份

A Signing identity是一对a Private key和a Identity certificate。

以下是获取签名标识所需的步骤:

  • Public/Private 对创建。
  • Private key用于生成CSR包含Public key+请求者信息的内容
  • CSR 发送到 Certificate Authority CA
  • CA验证CSR并发出CER(身份证书)(包含Public key+请求者信息)对其进行签名并将其发回给申请人。
  • signing identity通过拥有私钥和身份证书来建立A.
证书颁发机构

证书颁发机构CA分为两种类型; 根CA是其各方选择信任的CA,而中间CA是由根CA颁发的CA.

从新发布的CER到根CA形成信任链,如下所示:

root CA -> intermediate CA -> newly created CER

为了使新创建的CER受信任,客户端应该知道所有中间CA.

供应资料

供应配置文件是连接和驱动代码签名过程的核心组件。配置文件是从Apple开发者帐户生成并签名的plist,签名确保plist永远不会被修改。

配置文件连接以下组件:

  • Xcode使用 UUID
  • 申请使用 application-identifier
  • 使用应用服务 Entitlements
  • 用户设备使用 ProvisionedDevices
  • 用户签名身份(私人/ cer对)使用 DeveloperCertificates

提供配置文件组件

  • application-identifier:此值标识为此配置文件创建的应用程序。供应配置文件仅对1个应用程序有效(或在通配符标识符的情况下为多个)。
  • ProvisionedDevices:可以安装和运行应用程序的设备的UDID列表。
  • DeveloperCertificates:与此配置文件关联的开发人员证书(公钥+开发人员信息)列表。其中一个证书必须与Signing identity开发人员构建计算机上存储的证书相匹配,才能使应用程序的签名成功。Apple和iOS将使用此列表来验证应用程序是否已由相应的开发人员签名。
  • Entitlements:包含与应用程序服务相关的值的字典,例如推送通知,iCloud,passkit等......
  • 这里没有的一件事是aps-environment可以development或production将代表推送通知环境的sandbox和release。aps-environment必须正确设置值才能使推送工作。
  • UUID:此值对于您创建的每个配置文件都是唯一的,如果您手动指定Xcode项目的值PROVISIONING_PROFILE将是UUID配置文件的值。
  • get-task-allow:如果为true,则表示调试器可以附加到应用程序,否则将被拒绝。

供应过程

供应的第一步涉及选择应用程序的应用程序标识符,这将定义用户将能够选择哪个供应配置文件。

然后,开发人员通过使用PROVISIONING_PROFILE所需的配置文件填充项目构建设置来指定他将使用的配置文件UUID,Xcode将仅允许选择与当前配置相匹配的配置文件application identifier。

在选择了他将用于签署应用程序的签名身份之后,Xcode将使用提供配置文件中找到的证书DeveloperCertificates来匹配signing identity存储的钥匙串,然后开发人员选择他希望签署应用程序的签名身份用。

定义上述内容后,Xcode系统将对生成的二进制文件进行签名并创建一个CodeResources,CodeResources是一个包含文件列表及其签名(加密摘要)的plist。

Xcode还将在MACH-O二进制文件中编写代码签名权利。

然后,Xcode将创建一个包含应用程序可执行文件,图像,CodeResources embedded.mobileprovision和其他所需资源的包。然后将此最终捆绑包压缩并重命名为app.ipa

在设备上运行应用程序

为了让应用程序在设备上运行,系统必须回答一些问题:

  • 应用完整性是否安全?iOS将CodeResources使用嵌入式配置文件中的证书验证签名。
  • 该应用程序是否正确构建entitlements?iOS将读取插入应用程序二进制文件中的代码签名权利,并将其与嵌入式配置文件中存储的权限进行比较。
  • 设备是否允许安装应用程序?iOS将从嵌入式配置文件中获取已配置设备的列表,并将其与当前设备进行比较。

权益

应用程序权利是plist定义应用程序将具有哪些功能以及它们的值。这个plist是从Xcode项目处理的capabilities。

当应用程序需要其他功能时,将创建权利plist文件,并将其设置为Code Signing Entitlements项目设置中的目标条目。在构建应用程序时,权利将写入主应用程序可执行文件中。

在应用程序安装时,系统将检查已用于构建应用程序的权利.plist(现在存储在应用程序可执行文件中)与存储在嵌入式供应配置文件中的权利相同,以防其不同的The executable was signed with invalid entitlements.错误将被抛出

修复上述问题就像在文本编辑器中打开配置文件(或嵌入的配置文件)一样简单,复制权利字典并将其粘贴到application entitlements.plist中并重建应用程序。

代码签名

数字签名是为消息或文件创建哈希摘要,然后使用私钥对其进行签名(加密)的过程。摘要是使用加密哈希函数(如SHA或MD5)创建的。

然后可以使用公钥读取(解密)和验证数字签名。解密签名文件会恢复哈希并将其与为同一文件创建的哈希进行比较。

发送哈希确保消息完整性,签署哈希确保不可否认性。

标志:

hash = file -> md5

hash -> sign(encrypt)(private) -> signature

校验

signature -> verify(decrypt)(public) -> hash1

hash2 = file -> md5

compare hash1 and hash2

在代码签名中,为最终产品中捆绑的每个可执行文件和脚本生成签名,图像和其他资源通常保持未签名。然后,这些签名将收集并合并到最终应用程序包中包含的签名文件中。

APNS

APNS的工作原理是要求与APNS服务器建立TLS连接,私钥+证书对将用于验证此连接。

当您选择在应用程序中使用APNS时,您可以application services通过启用推送通知来更新开发人员控制台中的应用程序ID ,控制台将管理添加和删除证书(开发和生产)(使用CSR)创建私有+证书密钥,稍后用于验证与Apple APNS的TLS连接。

在与APNS连接期间,有效载荷将被传输到包含设备令牌,消息,时间戳等的APNS ......

大多数APNS问题源于遗漏或错误的权利。下面将讨论问题的主要原因和解决方案。

丢失的aps-environment

这里的问题是用于构建应用程序的供应配置文件不包含aps-environment权利字典中的值,如果最近更改了应用程序标识符并且未重新生成供应配置文件,则可能会发生这种情况。

要解决此问题,请登录到开发人员控制台并重新生成配置文件。

错误的aps-environment价值

aps-environment 可以设置为生产或开发。

production:为了传递推送,gateway.push.apple.com:2195使用Apple Production IOS Push Services证书建立TLS通信。

productionAPNS与Adhoc或Appstoreapp build 相关联

development:对于开发,应gateway.sandbox.push.apple.com:2195使用Apple Development IOS Push Services证书建立TLS 。

developmentAPNS与Development应用版本相关联。

错误的配置文件

在向Xcode添加APNS权利后设置更新的配置文件可能会引入问题,因为两个配置文件具有相同的名称,为了100%确保您的应用程序构建中使用了更新的配置文件,请检查PROVISIONING_PROFILE项目中的值具有UUID提供配置文件值的文件。

扫二维码与IOS签名经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/ios企业签名咨询/签名价格咨询/技术建议/互联网交流

上一篇:ipa企业签名的应用分发的重要说明

下一篇:构建和分发ipa企业签名应用程序

郑重申明:IOS企业签名以外的任何单位或个人,不得使用该案例作为工作成功展示!
  • 咨询QQ:869349528
    邮箱:869349528@qq.com
    工作时间:08.30-23.30
友情链接: ios企业签名 微构网
Copyright © 2017-2019 www.wegto.com.版权所有  鄂ICP备19007640号-1    苹果企业签名  苹果签名  ios企业签名  
点击这里给我发消息