【问题标题】:Resolving codesign certificate ambiguity with multiple developer certificates使用多个开发人员证书解决协同设计证书歧义
【发布时间】:2009-11-10 20:03:17
【问题描述】:

我最近为另一家公司做了一些工作,为他们构建了一个 iPhone 应用程序。当我在他们的办公室、使用他们的计算机和我的办公室之间分配开发时间时,我生成了一个密钥,并将其作为他们 iPhone 开发中心“团队”的一部分进行了签名。

我已经有一个现有的开发中心帐户和我自己的开发者证书。为客户端项目导入证书后,签署该应用程序会向我发出来自 codesign 的警告,指出它找到了多个与“iPhone Developer: Steve Madsen”匹配的证书,但它选择了正确的一个并签署了二进制文件。

我现在要使用我自己的开发人员证书回到我的一个旧项目。 Codesign 告诉我它无法解决我的证书和我的客户使用的证书之间的歧义:

iPhone 开发者:Steve Madsen:不明确(匹配 /Volumes/Users/steve/Library/Keychains/login.keychain 中的“iPhone 开发者:Steve Madsen (9E69FVL37K)”和“iPhone 开发者:Steve Madsen”)

客户端证书是带有 (9E69FVL37K) 的证书,我认为这是 codesign 能够在我的客户项目中解决问题的方式。

如何配置 Xcode 项目以使用正确的身份?在目标构建设置下选择一个特定的(不是自动配置文件选择器)没有帮助。

更好的是,虽然 Apple 预计开发人员可以是多个团队的成员,但我没有找到关于像我这样的开发人员应该如何设置我的环境的文档。生成第二个密钥/证书似乎是完成这项工作的唯一方法,因为配置文件必须与一个团队的程序门户下的证书相关联。有没有人对如何使这个过程顺利进行有好的建议?

【问题讨论】:

  • 选择一个特定的身份而不是自动选择应该可以工作 - 它对我有用。
  • 哦,请确保它在两者中都正确选择了身份;项目属性以及目标属性!
  • 这没什么区别。问题是两个键具有相同的前缀,而我要使用的键整体上是第二个(客户端工作)键的前缀。 Codesign 没有模式可以说“身份就是这个,不要试图聪明。”
  • 有趣的是,我现在确实有同样的问题 - 将尝试撤销所有内容,看看会发生什么。

标签: iphone codesign


【解决方案1】:

我今晚冒险决定撤销我的旧证书并生成一个新证书。我的猜测是正确的:Apple 现在颁发的所有证书都带有(十六进制字符串)后缀。

Xcode 足够聪明,可以做正确的事。我在目标设置中选择“iPhone Developer”(自动选择)。它根据配置文件确定应该使用我的哪个密钥对二进制文件进行签名,然后通过包含(十六进制字符串)后缀告诉 codesign 准确使用该身份。

我敢打赌,较新的 iPhone 开发人员永远不会看到这个问题,因为他们在 Apple 开始添加后缀之后生成了他们的第一个证书。

提醒其他必须这样做的人:您还需要修复所有现有的配置文件,然后重新安装。

【讨论】:

    【解决方案2】:

    到目前为止,我已经在 3 个团队中工作,并且一直在使用 3 个单独的 iTunes 帐户,每个帐户一个(所以 3 个单独的电子邮件地址)。我知道这听起来不是最理想的情况,尤其是如果您的团队比这更多。

    但是,我想知道是否还有其他方法。因为如果您可以将您的 iTunes 帐户(iPhone 开发中心用户)与多个团队相关联,那么当您登录开发中心时会发生什么?您有多个选项可以进入多个“iPhone Developer Progrma Portals”?

    【讨论】:

    • 这正是正在发生的事情 - 登录时会询问您要在哪个团队工作。
    • 伙计们,这些不是我问题的答案。评论属于上面。
    • 史蒂夫,这是我的答案,我一年来一直没有问题的方式。 “直到”谢谢你让我知道还有另一种方法!
    • 我很感激,Dimitris,但我不是在谈论 iTunes Connect 帐户,而是在谈论代码签名证书。 iTunes Connect 帐户名称、电子邮件地址、团队名称等不会出现在证书选择的图片中。您的所有证书都在同一个钥匙串中吗?你有没有做任何特别的事情来选择你的项目中的一个和另一个?
    • 我有 3 个帐户和每个帐户的多个证书。全部在同一个钥匙串中(也在多台计算机上)。我只需为我需要的“CompanyA dev”、“CompanyB distribution”等构建配置选择正确的证书。它可以正常工作。我唯一需要注意的是在我的 Xcode Organizer 上只维护我需要的证书,这样我在修改证书时就不会得到重复。
    【解决方案3】:

    感谢 Steve Madsen 指出。Apple 现在颁发所有带有 (HEXSTRING) 后缀的证书。这意味着如果您之前拥有 RUPERTO DE GUZMAN 的证书,则需要从 PROGRAM PORTAL -> CERTIFICATES 中撤销此证书。然后创建一个新证书。您的新证书现在将是 RUPERTO DE GUZMAN (EZxxxxxxxx)。

    现在,codesign 不会再与前缀混淆了,因为我们有:

    之前:

    鲁珀托·德·古兹曼

    鲁珀托·德·古兹曼 (89xxxxxxx)

    之后:

    鲁珀托·德·古兹曼 (EZxxxxxxx)

    鲁珀托·德·古兹曼 (89xxxxxxx)

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2021-01-05
      • 2018-06-19
      相关资源
      最近更新 更多