【问题标题】:Codesign error: Certificate identity appearing twice代码设计错误:证书身份出现两次
【发布时间】:2011-08-21 09:51:10
【问题描述】:

CodeSign 错误:证书身份“iPhone Developer: XXXX (12345678)”在钥匙串中出现多次。协同设计工具只需要一个。

所以我去我的钥匙串并删除它。但是每次我重新启动 Xcode 4 并且某些应用程序将过期的旧证书添加回钥匙串时,我都会收到此错误。任何想法为什么以及哪个应用程序?

【问题讨论】:

标签: iphone objective-c xcode4 code-signing


【解决方案1】:

我也遇到了同样的问题。 它已被修复。 它是在我提交了一个应用程序并安装了一些证书来签署该应用程序之后出现的。

快速修复: 打开 KEYCHAIN ACCESS > 点击 MY CERTIFICATES> 在那里你可能会看到 iPhone 开发者:.你可能会看到它两次! 选择过期日期最早的,右键选择DELETE。

如果你还没有重启 Xcode。 现在工作。 :)

快乐编码。

【讨论】:

  • 再上一步!删除重复证书后,您需要在 XCode 中打开 Organizer 并刷新您的配置文件。
  • @Meekohi “刷新”我的配置文件是什么意思?谢谢!
  • 删除旧证书后,重新启动 Xcode 为我解决了同样的问题。
  • 在 Xcode 4(我有 4.4.1)上,我必须删除与旧证书关联的所有配置文件。然后我重新启动 Xcode,旧证书(神奇地)停止出现在钥匙串上。
  • 为我添加了一项功能(我使用的是 Xcode 4.6.3)。我删除了过期(或最快过期)的证书,然后重新启动了 Xcode,但我仍然遇到了问题 - 旧证书以某种方式重新出现在 KeyChain Access 中。所以,我重新启动了 Xcode,但在选择要打开的项目之前,我回到 KeyChain Access 并且旧证书又在那里,所以我删除了它。然后我打开了我的项目(在已经运行的 Xcode 中),一切都很好 - 我能够再次构建。
【解决方案2】:

我想我明白为什么简单的删除不起作用了。因为开发证书仍然存储在配置文件中,所以当我在删除钥匙串中的证书后关闭/重新打开 Xcode 时,我看到旧证书又回来了。所以我再次删除它。有效。

简单的删除配置文件解决方案对我不起作用。

适用于我的解决方案:

  1. 退出 Xcode
  2. 如果钥匙串访问已打开,请保持打开状态。
  3. 立即启动 Xcode。
  4. 看到 Xcode 抱怨的证书将在启动时从其缓存中重新添加到钥匙串中。
  5. 继续删除它。
  6. 编译并快乐编码。

【讨论】:

  • 我尝试了上述所有解决方案,这个解决方案成功了。似乎有多种原因/解决方案。
  • +1:我可以确认 XCode 确实保留了证书的“缓存”并在启动时添加它们——它以这种方式工作太可怕了!会导致很多问题!真可惜,Apple,这已经造成了数小时的浪费时间!
【解决方案3】:

我刚刚花了相当多的时间来解决同样的问题。经过所有尝试修复它,我终于意识到这是 Xcode 中的一个错误。这篇文章给了我一个修复它的线索: certificates magically re appearing in your keychain

在我的情况下,匹配的私钥在系统钥匙串中,并且上面只有我的名字(很难说它是用于配置的)。我不得不:

  • 将关联的私钥移至“登录”钥匙串
  • 重新启动 Xcode 并注意到私钥现在显示为关联(确认其用途)
  • 删除证书和私钥
  • 重启 Xcode 并噗!它停止添加我的旧证书

一个有趣的观察是,当您删除证书时,它不会删除关联的私钥。在视觉上,它显示了证书下方的私钥。不要被愚弄了。

祝你好运!

【讨论】:

  • 删除私钥也对我有用 - 最新的 xcode 2012 年 10 月更新山狮
【解决方案4】:

好的,找到另一个“相关”问题的答案。 Xcode expired certificate problem Xcode 4 的已知问题 http://openradar.appspot.com/9173280

【讨论】:

  • 我遇到了同样的问题。但是,我在这里或其他主题中看不到答案。你解决了吗?
【解决方案5】:

如果您是 iOS 开发人员和企业 iOS 开发人员计划的成员,并且您为两个应用程序输入了相同的公司名称,您最终将获得两个具有相同名称的有效分发证书。

我相信这个问题可以解决这种情况: CodeSign collisions between Developer and Enterprise Distribution

【讨论】:

    【解决方案6】:

    我对 xcode45-DP1 有同样的问题。这对我有用:

    1. 从钥匙串中删除与您的帐户相关的所有证书。退出钥匙串

    2. 从 xcode:organizer:device:Library:provisioning 配置文件中删除与您的帐户相关的所有配置文件。退出 xcode

    3. 撤销您的证书并重新生成并将其下载到您的构建机器

    4. 在下载配置文件之前,单击下载按钮旁边的编辑,以确保您的名字被选中。

    5. 然后下载配置文件

    6. 双击证书将其安装到钥匙串上

    7. 将配置文件拖到 xcode:organizer:device:Library:provisioning 配置文件

    8. 不要点击 xcode 中的刷新按钮。

    9. 进行构建。

    【讨论】:

      【解决方案7】:

      答案是here

      使用带有 Organizer 的旧证书删除我的所有旧配置文件,然后退出 XCode,从 Keychain 中删除旧证书并重新启动 XCode。

      当您在配置文件中引用时,xcode 似乎会保留证书

      【讨论】:

        【解决方案8】:

        我在将僵尸证书重新填充到我的钥匙串中并且证书身份出现两次时遇到了问题。简单地删除重复的证书是行不通的。

        在 Xcode 中,当我查看目标中的代码签名时,我记得我在“Ad Hoc”构建中的分发配置文件与“Release”构建不同。

        当我生成新证书时,我只下载了 Ad Hoc 构建的新配置文件,而不是 Release 构建的新配置文件。

        Xcode 挂在这两个配置文件的证书上,因此 Xcode 导致证书重复...因为我忘记正确更新我的配置文件。

        确保将所有配置文件更新为新证书,并在 Xcode 中同时更改所有配置文件。

        【讨论】:

          【解决方案9】:

          我遇到了这个问题并阅读了有关它的所有信息,最后我自己找到了解决方案。人们没有提到的是 BEFORE 清理 Xcode 管理器中的证书和 BEFORE 清理你的钥匙串中过期的密钥,你需要确保你没有任何过期的Provisioning Portal 中的证书。 如果您甚至有一个使用旧开发人员证书的旧应用程序的过期证书,Xcode 将在第一次构建时将其拉入其组织者,然后它将进入您的钥匙串并导致重复。

          【讨论】:

            【解决方案10】:

            在我的例子中,Xcode 正在查看的“缓存”是一个附加的 iOS 设备。要确定这是否是您的问题:

            1. 断开所有 iOS 设备的连接
            2. 从 Keychain Access 中删除有问题的证书和私钥
            3. 重启 Xcode
            4. 检查钥匙串访问:在我的情况下,此时未重新创建副本
            5. 重新连接 iOS 设备
            6. 再次重启 Xcode
            7. 检查钥匙串访问:在我的情况下,此时重新创建了副本

            如果这是你的根本原因,你可以通过确保在启动 Xcode 之前断开 iOS 设备来解决它。

            【讨论】:

              【解决方案11】:

              Simply deleting the redundant certificate 对我不起作用。似乎每次调用 xcodebuild 时,它都会从某处的缓存中“重新创建”钥匙串中的证书......与avi 相同的问题我为它创建了一个 hack/fix,试图找到文件的位置被缓存并清除它,但没有运气。最后,对我有用的东西(有点小技巧,但是嘿,你还能做什么)是找出证书编号是什么,并在调用 xcodebuild 后不久手动将其从钥匙串中删除。首先,进入你的 /usr/bin/ 目录(或者任何有你的 xcodebuild 文件的目录,试试which xcodebuild)并运行以下命令:

              sudo mv xcodebuild xcodebuild_actual
              

              然后使用您喜欢的编辑器(不要忘记使用 sudo)创建一个文件,代码如下:

              xcodebuild_actual $* &
              echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
              sleep 2
              echo "Wiping Certificate..."
              sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E
              

              注意:您必须修改您的 sudoers 文件才能在无需输入密码的情况下运行此特定命令。

              将上面 -Z 之后的十六进制标识替换为有问题的僵尸证书的十六进制标识。最后,确保 xcodebuild 文件是可执行的:

              sudo chmod 755 xcodebuild 
              

              您现在可以打开您的钥匙串并运行构建命令,并观察有问题的僵尸证书是如何复活的,然后在它成为代码设计的问题之前对其进行简单的处理。希望 Apple 能真正解决这个问题。

              【讨论】:

                【解决方案12】:

                在我的情况下,删除证书不起作用。 XCode 4 似乎缓存或恢复它们。最终对我有用的技巧是让钥匙串和 xcode 运行。然后在钥匙串中将我的 2 个证书(dev+dist)从“登录”拖到“系统”。然后重复项神奇地重新出现,我能够删除它们,然后我将证书拖回“登录”

                【讨论】:

                  【解决方案13】:

                  这很容易,将正确的证书导出到您的桌面。删除该证书 在钥匙串中。尝试使用错误消息构建源代码(没有证书..) 然后再次导入证书。 => 成功!

                  【讨论】:

                    【解决方案14】:

                    我刚刚删除了我不再需要的证书的钥匙串中的一个私钥。

                    即使证书重新出现,但私钥不会重新出现。现在检查有效证书,只有一个证书会出现,其他被删除私钥的证书不再显示在有效证书下。

                    我认为这是解决此问题的最简单方法。

                    【讨论】:

                      【解决方案15】:

                      我曾经处理过同样的问题。我已经通过从 xcode 的 Organizer 选项卡中删除未使用的配置文件来解决它。实际上,钥匙串将从这个配置文件中获取该证书,该证书要么是过期的证书,要么是由撤销的证书构建的。

                      因此,您只需从“管理器”选项卡中删除此配置文件。管理器位于 xcode 的右上角按钮打开它,然后在管理器中删除您不使用的配置文件。

                      这是截图,

                      并且不要忘记从钥匙串中删除额外的证书,但之后这些证书不会再次出现。

                      【讨论】:

                        猜你喜欢
                        • 2012-09-05
                        • 2012-08-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2022-07-01
                        • 2021-01-16
                        • 2015-01-29
                        • 2012-07-10
                        • 1970-01-01
                        相关资源
                        最近更新 更多