代码之家  ›  专栏  ›  技术社区  ›  Steve Madsen

用多个开发人员证书解决代码签名证书模糊性

  •  12
  • Steve Madsen  · 技术社区  · 15 年前

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

    我已经有了一个现有的开发中心帐户和自己的开发人员证书。在为客户机项目导入证书之后,对该应用程序进行签名会给我一个来自CodeSign的警告,即它发现多个证书与“iPhone开发者:Steve Madsen”匹配,但它选择了正确的证书并对二进制文件进行签名。

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

    iphone开发者:steve madsen:含糊不清(匹配“iphone开发者:steve madsen(9e69fvl37k)”和“iphone开发者:steve madsen”in/volumes/users/steve/library/keychains/login.keychain)

    客户证书是带有(9e69fvl37k)的证书,我认为这是代码签名如何能够在我的客户的项目中解决问题的。

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

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

    3 回复  |  直到 11 年前
        1
  •  5
  •   Steve Madsen    15 年前

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

    Xcode足够聪明,可以做正确的事情。我在目标设置中选择“iPhone开发者”(自动选择)。它根据设置配置文件确定应该使用哪个键来对二进制文件进行签名,然后通过包含(十六进制字符串)后缀告知CodeSign准确地使用该标识。

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

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

        2
  •  0
  •   Dimitris    15 年前

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

    不过,我想知道是否还有别的办法。因为如果您可以将您的iTunes帐户(iPhone开发中心用户)与多个团队关联,那么当您登录到开发中心时会发生什么?您有多个选项可以进入多个“iPhone开发者程序门户”?

        3
  •  0
  •   iwasrobbed    11 年前

    感谢史蒂夫·马德森指出了这一点。苹果现在发行所有后缀为(hexstring)的证书。这意味着,如果您以前拥有Ruperto de Guzman的证书,则需要从程序门户->证书中撤销此证书。然后创建一个新证书。你的新证书将是ruperto de guzman(ezzxxxxx)。

    现在,代码符号不再与前缀混淆,因为我们有:

    之前:

    古兹曼

    古兹曼(89XXXXXXX)

    后:

    古兹曼(Ezzxxxxx)

    古兹曼(89XXXXXXX)