Codeign和Ambiguos身份,匹配"Mac Developer"和"iPhone Developer"

jww*_*jww 4 code-signing jailbreak ios

我正在测试库的发布过程.该过程需要在Jail Broken iOS设备上进行测试.为此,我使用一台旧的iPad 1运行iOS 5.1监狱,用RedSn0w打破.

RedSn0w没有修补Gatekeeper服务(代码签名),因此我需要使用我的开发人员帐户并签署我正在测试的二进制文件(Absinthe补丁关守,以及它可以ldid用来生成虚假签名的原因).

试图签署结果:

$ codesign -s "John Doe" cryptest.exe 
John Doe: ambiguous (matches "Mac Developer: John Doe (3VT8SJ9C5)" and "iPhone Developer:
John Doe (3VT8SJ9C5)" in /Users/jdoe/Library/Keychains/login.keychain)
Run Code Online (Sandbox Code Playgroud)

我做了一个传递codesign(1),但我不知道如何解决它,因为它们是相同的KeyID.使用KeyID会生成相同的消息.

如何在签署可执行文件时消除歧义?

l'L*_*L'l 8

不明确的证书

当钥匙串中存在两个具有相同身份的证书时,会发生这种情况:

代码签名工具要求只有一个.

注意:ldid在您的问题中提及可能需要更多说明它与您的Apple发布的代码签名证书的关系,或者确切的问题.

重复证书有时会出现在钥匙串中,因为一个过期的证书从未被删除过.Apple有一些解决此类问题的说明,但如果以下方法不起作用,您可能需要在正常程序之外解决它:

  1. 在Keychain Access中,确保打开"查看"菜单>显示过期证书选项
  2. 单击"证书""类别",然后单击您在Keychain Access的"Keychain"侧栏中列出的每个钥匙串.如果您看到任何重复项,甚至是过期的证书,请删除这些重复项.
  3. 单击Keychain Access中的"Keys""Category".
  4. 浏览每个钥匙串,查找并删除与受影响的证书具有相同公共名称的任何"孤立密钥".孤立密钥是不受Disclosure Triangle绑定到iPhone Developer或当前存在于钥匙串中的iPhone Distribution证书的密钥.
  5. 如果您找到并删除了任何额外的密钥或证书,请重新尝试构建.
  6. 如果在使用相同的公用名删除所有活动或过期的重复证书或密钥后问题仍然存在,您可以尝试删除所有现有签名证书和密钥,并使用如何删除/撤消我的证书中的步骤将其替换为新证书和密钥.过新鲜的?
  7. 最后,如果在创建新证书后错误仍然存​​在,请在Keychain Access中按住Control键并单击受影响的证书,选择"新标识首选项",然后单击"证书"字段.如果您在此处看到重复的证书,则这是Keychain Access的一个已知且不常见的问题.要解决此问题,请尝试以下操作:

    Keychain Access> Edit> Keychain List,取消选中登录钥匙串的"Shared".

如果返回到Keychain List,您会发现登录密钥链仍然标记为Shared,创建以下文件的备份,如果存在则删除它们:

    /Library/Preferences/com.apple.security-common.plist
    ~/Library/Preferences/com.apple.security.plist
Run Code Online (Sandbox Code Playgroud)

然后重试你的构建......

如果您未能通过上述步骤解决问题,请尝试搜索错误消息中列出的证书之一.一旦找到有问题的证书,就删除过期的证书或与您需要的证书冲突的证书.


多个协同签名证书(不重复)

如果您有多个代码签名证书,则需要使用以下-s选项指定要使用的代码(如果从命令行进行代码签名):

codesign -s <certificate name> -vvvv foo.app
Run Code Online (Sandbox Code Playgroud)

-s, - sign identity使用此标识在路径上签署代码.请参阅人工代码中的签名身份.

可选:

-v, - 验证请求验证代码签名.如果还请求其他操作(符号,显示等),则-v被解释为--verbose.

例如,在您的情况下:

codesign -s "iPhone Developer: John Doe" cryptest.app
Run Code Online (Sandbox Code Playgroud)