【问题标题】:IOs code signing clarificationIOs 代码签名说明
【发布时间】:2014-05-06 06:13:57
【问题描述】:

据我了解,在 IO 上分发应用程序有 4 种可能的方式:

  1. 发展
  2. 特设
  3. 企业
  4. 应用商店

我了解 Development 分发方式的工作原理。您需要向 Apple 提交证书请求,Apple 会为您颁发证书。然后您使用此证书签署您的应用程序。

但是,尚不清楚 Ad Hoc、Entreprise 和 App Store 证书是如何工作的。特别是:

  • Ad Hoc 可以安装在各种设备上,但是,您可以 无需在配置文件中指定设备。你需要 提交特殊请求以获得 Ad Hoc 证书,以及如何 设备级别的强制执行是否有效?
  • 同样,据我了解,企业证书可用于
    在不同的设备上安装应用程序(您不需要在 进步)。看来 Enterprise 和 App Store 很像
    证书,即,我看不出它们之间的区别。如何 证书的安全检查是否适用于企业?

我的直觉是 Apple 作为证书颁发机构工作,但使用不同的根证书签署所有这些类型的证书,即开发人员请求使用 Developer Apple 根证书进行签名,而 Enterprise 使用 Enterprise Apple 根证书进行签名。然后,在设备上安装期间,检查根证书的类型并执行相应的决定。我说的对吗?

【问题讨论】:

标签: ios iphone xcode code-signing


【解决方案1】:

答案在于配置配置文件,而不是证书或其权限。

没有临时证书这样的东西。只有分发证书和开发证书。企业帐户也是如此,其证书完全相同(除了出处类型的帐户)。所以 Ad Hoc、App Store 和 Enterprise 都是分发证书。您的所有证书均由同一机构签署:Apple 全球开发者关系认证机构,因此它们不能有不同的根 CA。

不同之处在于配置文件本身,它们只是 Apple 签署的 plist。 iDevices 信任 WWDR 证书链的某些部分(根 CA?),如果签名签出,则解释配置文件并决定是否可以安装或运行给定的应用程序。

配置文件说明谁可以在哪些设备上运行什么。它们由 Apple 签名,因此设备可以验证它们所说的内容。

我可以看到的配置文件类型之间的区别是:

企业简介有

<key>ProvisionsAllDevices</key>
<true/>

Ad Hos 有

<key>ProvisionedDevices</key>
<array>
  UDIDs! You do, in fact, need to specify them for Ad Hoc!
</array>

而且 App Store 配置文件似乎没有特殊的配置信息。事实上,我不确定它们是否真的安装在设备上。

security cms -D -i your.mobileprovision 命令对于探索配置文件很有用。

【讨论】:

  • 感谢您的回答。我需要更多说明。根据您的回答和本文 (raywenderlich.com/2915/ios-code-signing-under-the-hood),在分发应用程序之前,您需要创建一个配置文件,其中包含 UDID 列表并使用您的密钥签署此配置文件。然后我不明白以下事情:似乎我可以创建一个企业配置文件,用我的密钥对其进行签名并分发应用程序而不在 App Store 中发布它们?
  • 你没有用你的密钥签署配置文件,Apple 用它来签署它。所以你不能只给自己企业分发,Apple 必须这样做。要获得企业帐户,您必须同意不在公司外部分发。
  • 所以这意味着不同类型的分发过程不同。对于 Development 和 Ad Hoc 案例,开发人员必须自己签署应用程序(因为配置文件还包含 AppId)配置文件,而 Entrerprise 必须由 Apple 签名并分发回企业代表。如果我错了纠正我。但是,不清楚 IDevice 上的检查逻辑。如果配置文件直接与 Apple 签署,则允许在所有设备上安装应用程序,如果使用开发人员证书 - 则仅在指定的 UDID 上?
  • 证书没有任何改变,因为所有配置文件都由 Apple 签名。所有不是来自应用商店的应用程序都由您签名。配置文件说明谁可以在哪些设备上运行什么。 Dev 和 Ad Hoc 配置文件允许在任何设备上通过 UDID 和 Enterprise 安装在指定设备上。
  • 非常感谢您的耐心等待!现在我想,我什么都明白了。在创建应用程序项目的过程中,您还可以在 Provisioning Profile Manager 中创建一个与应用程序一起分发的配置文件。在任何情况下,此配置文件都是与 Apple 签署的,因此,企业和开发人员分发方式的流程没有区别。
【解决方案2】:

我为简化对 iOS 配置文件的理解而创建的维恩图。 在此处查看 Google 绘图文档:https://docs.google.com/drawings/d/1Td19Lf94Lep3h7jFD2mYdO564Y_LiWBaFaartDE8riU/edit?usp=sharing

【讨论】:

  • 感谢您的回答!但是,此图并未阐明如何在设备级别实施此保护。我认为@RhythmicFistman 的回答对这个问题有更多的了解。不过,我非常感谢您的回答。
  • 没问题!我创建该图是为了了解配置文件拼图如何根据以下方面组合在一起:1)两个不同的 iOS 开发人员程序和 2)每个程序的哪些配置文件需要 UDID,哪些不需要。应该注意的是,企业订阅不允许您部署到 App Store。您需要订阅两种类型的开发者计划,以便为 App Store 部署和内部“内部”部署构建应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2017-01-23
  • 2014-09-21
相关资源
最近更新 更多