【问题标题】:How should an organization with multiple iOS applications under development manage iOS distribution certificates?拥有多个正在开发的 iOS 应用程序的组织应如何管理 iOS 分发证书?
【发布时间】:2016-08-27 13:06:22
【问题描述】:

我最近参与了一个拥有 iOS 开发组织帐户的小组。

他们有多个团队,都在开发单独的 iOS 应用程序。得知组织的“iOS 分发”证书的使用完全没有协调,我感到有些惊讶。取而代之的是,任何需要提交构建的开发人员只需创建一个新构建,必要时撤销一个或多个现有构建(Apple 似乎允许其中三个有限供应同时“上线”)。这种做法的理由似乎是以下观察结果的结合:

  • 一个开发人员创建的分发证书不能(轻松)被另一个开发人员使用(您可以在这个主题上找到很多关于 SO 的问题;解决方案似乎是确保证书的私钥元素也被共享,但该组织尚未接受这一点。Exampleanother example;还有更多)。
  • xcode7 比以往任何时候都更容易生成分发证书,因此这显然是 Apple 的预期方式(xcode6 需要前往开发人员中心)。
  • 仅在应用商店提交的窗口很小的情况下需要分发证书;一旦应用在应用商店中,分发证书是否被吊销没有任何区别。
  • Apple 似乎在分发证书续订方面有一些稍微奇怪的后进先出规则(如果您有“旧”、“新”和“最新”并且您撤销“新”或“最新”......你会发现在你撤销“旧”之前你仍然无法创建一个新的)。或者,至少这些规则对于希望在各个团队/项目之间分配有限的分发证书库存但发现与 Apple 实际提供的内容不符的组织来说似乎很奇怪。

但是,我发现这种快速分发证书流失政策的一个非常严重的负面后果是,testflight 版本根本不会保持有效很长时间,并且 tesflight 用户发现自己收到有关无效证书的对话框或拥有他们所使用的应用程序应该是过早从 testflight 中消失的 testflight 测试人员。 (事实上​​,也请参见 this question 同理)。

鉴于 Apple 清楚地将 testflight 视为应用商店基础架构的重要组成部分,我很难相信这个组织正在按照 Apple 实际打算做的事情来做事。 对正确的做事方式有一些见解的人可以请教我吗?

抱歉,如果我的术语在上述某些内容中出现问题......我只是涉足这些东西。

【问题讨论】:

    标签: ios xcode certificate app-store testflight


    【解决方案1】:

    正确的方法是拥有一个分发证书并共享私钥。我们共享一个小钥匙串,其中仅包含我们组织之间开发/分发所需的私钥和证书。您可以将这个“存根”钥匙串添加到您的所有开发机器中,如果它被检查到版本控制中,您可以轻松地将更新推送给每个人。你也可以用密码保护它,在这种情况下Xcode会要求你在使用codesign时解锁它。

    IMO,搅动证书“很容易”这一事实实际上是一件坏事。正如您所观察到的,团队中的其他开发人员很容易搞砸事情,尤其是在 TestFlight 方面,尽管我最近从另一位开发人员那里听说 Apple 可能已经解决了这个问题。 (我自己还没有确认。)

    【讨论】:

    • 谢谢,听起来不错。我在 4 月 28 日看到证书吊销杀死了 testflight 部署,所以如果 Apple 修复了任何问题,那肯定是最近才修复的。
    • 我们采用了类似的方法。我们首先从大多数开发团队成员中删除了“管理员”角色,这样他们就无法通过单击“修复”按钮轻松撤销证书。然后我们生成了一个分发证书,我们在团队之间共享。我们还鼓励尽可能在共享构建盒上进行构建。
    • @jsd 我想知道 Apple 最近是否开始支持具有多个管理员的组织帐户的多个分发证书(我可以在我的开发人员门户中看到 2 个团队管理员的 2 个分发证书)。或者您能否提供任何支持您的答案的 Apple 文档?谢谢
    • @jsd 是否可以为每个应用程序使用不同的分发证书?我知道这不好,但它会很好。
    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2013-01-16
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多