一个拥有多个正在开发的iOS应用程序的组织应该如何管理iOS分发证书



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

他们有多个团队,所有团队都在开发单独的iOS应用程序。当我得知该组织的"iOS分发"证书的使用根本没有协调时,我有点惊讶。相反,无论哪个开发者需要提交构建,都只需创建一个新的构建,并在必要时撤销一个或多个现有的构建(苹果似乎允许其中三个的有限供应同时"上线")。这种做法的理由似乎是以下观察结果的结合:

  • 由一个开发人员创建的分发证书不容易被另一个使用(你可以在这个主题上找到很多关于SO的问题;解决方案似乎是确保证书的私钥元素也被共享,但这个组织还没有考虑到这一点。例如,另一个例子;还有更多)
  • xcode7使得篡改分发证书比以往任何时候都更容易,所以这显然是苹果的既定方式(xcode6需要去开发者中心一趟)
  • 分发证书只需要在相当小的appstore提交窗口中使用;一旦应用程序在appstore中,分发证书是否被吊销就没有什么区别
  • 苹果似乎在分发证书续订方面有一些有点奇怪的后进先出规则(如果你有"旧"、"新"one_answers"最新",而你撤销了"新"或"新"……你会发现,在撤销"旧"之前,你仍然无法创建新证书)。或者,至少对于一个本想在不同团队/项目之间分配有限的分发证书库存的组织来说,这些规则似乎很奇怪,但发现这不符合苹果实际提供的内容

然而,我观察到这种快速分发证书流失政策的一个非常严重的负面后果是,试飞构建根本不会持续很长时间,特斯拉用户发现自己收到了关于无效证书的对话框,或者他们本应是试飞测试人员的应用程序很快就从试飞中消失了。(事实上,这个问题也是如此)。

考虑到苹果显然将试飞视为应用商店基础设施的重要组成部分,我很难相信这个组织正在按照苹果实际打算的方式行事一个对正确的做事方式有一些见解的人能启发我吗

如果我的术语在上面的一些地方不正确,我很抱歉。。。我只是涉猎这方面的东西。

正确的方法是拥有一个分发证书并共享私钥。我们共享一个小钥匙链,其中只包含在我们的组织中进行开发/分发所需的私钥和证书。您可以将此"存根"钥匙链添加到所有开发机器中,如果将其检查到版本控制中,您可以轻松地向每个人推送更新。您还可以对其进行密码保护,在这种情况下,Xcode将要求您在使用进行代码签名时解锁它。

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

最新更新