Ошибка Codesign: дважды появляется идентификатор сертификата

Ошибка CodeSign: идентификатор сертификата "iPhone Developer: XXXX (12345678)" появляется более одного раза в цепочке ключей. Инструмент codeign требует наличия только одного.

Итак, я иду в свой брелок и удаляю его. Но я получаю эту ошибку каждый раз, когда я перезапускаю Xcode 4, и какое-то приложение добавляет старый старый сертификат обратно в цепочку ключей. Любые идеи, почему и какое приложение?

Ответ 2

У меня была такая же проблема. Он исправлен. Это произошло после того, как я отправил приложение и установил несколько сертификатов для подписания приложения.

Быстрое исправление: Откройте "ДОСТУП КЛЮЧА" > нажмите "МОИ СЕРТИФИКАТЫ" там, где вы, вероятно, увидите Разработчик iPhone:. Вы, вероятно, увидите это ДВАЖДЫ! Выберите тот, у которого самая ранняя дата истечения срока действия, щелкните правой кнопкой мыши и выберите УДАЛИТЬ.

Перезагрузите Xcode, если вы этого не сделали. Работает сейчас.:)

Счастливое кодирование.

Ответ 3

Я думаю, что понял, почему простое удаление не работает. Поскольку сертификат разработчика по-прежнему сохраняется в профиле предоставления, когда я закрываю/повторно открываю Xcode после удаления сертификата в Keychain, я видел, как старый сертификат возвращается. Поэтому я удаляю его снова. Это сработало.

Простое удаление решения профиля не сработало для меня.

Решение, которое работало в моем случае:

  • Выйти из Xcode
  • Если доступ к Keychain открыт, держите его открытым.
  • Запустите Xcode сейчас.
  • Посмотрите, что сертификат Xcode жалуется, будет повторно добавлен в цепочку ключей при запуске из кеша.
  • Идем дальше и удаляем его.
  • Компиляция и счастливое кодирование.

Ответ 4

Я просто потратил немало времени, борясь с этой же проблемой. После всех попыток исправить это, я наконец понял, что это ошибка в Xcode. Этот пост дал мне подсказку, чтобы исправить это: сертификаты, магически появляющиеся в вашей цепочке ключей

В моем случае соответствующий секретный ключ находился в системной цепочке ключей, и просто было мое имя на нем (трудно сказать, что это было для обеспечения). Мне пришлось:

  • Переместите связанный закрытый ключ в цепочку "login"
  • Перезапущенный Xcode и заметил, что закрытый ключ теперь отображается как связанный (подтверждает, для чего он был)
  • Удалить сертификат и закрытый ключ
  • Перезапустите Xcode и poof! Он прекратил добавлять мой старый сертификат

Интересное замечание состоит в том, что при удалении сертификата он не удаляет связанный закрытый ключ. Визуально он показывает закрытый ключ под сертификатом. Не обманывайте себя.

Удачи!

Ответ 5

Если вы являетесь участником программ для разработчиков iOS Developer и Enterprise iOS и вы ввели название своей компании в обоих приложениях, вы получите два действительных сертификата распространения с тем же именем.

Я считаю, что этот вопрос затрагивает эту ситуацию: Кодировки CodeSign между Developer и Enterprise Distribution

Ответ 6

У меня такая же проблема с xcode45-DP1. это работает для меня:

  • удалить все сертификаты, связанные с вашей учетной записью, из связки ключей. QUIT keychain

  • удалите все профили подготовки, связанные с вашей учетной записью, из xcode: organizer: device: Library: профили подготовки. QUIT xcode

  • отозвать сертификат и восстановить его и загрузить его на свою машину сборки

  • прежде чем загружать профиль подготовки, нажмите "Изменить" рядом с кнопкой загрузки, чтобы убедиться, что выбрано ваше имя.

  • Затем загрузите профиль подготовки

  • дважды щелкните по сертификату, чтобы установить его на цепочку ключей

  • перетащите профиль подготовки в xcode: organizer: device: Library: профили подготовки

  • не нажимайте кнопку обновления из xcode.

  • сделать сборку.

Ответ 7

Ответ здесь

удалите все мои старые профили подготовки, используя старый сертификат с помощью Organizer, затем закройте XCode, удалите старый сертификат из Keychain и перезапустите XCode.

выглядит так: xcode будет хранить сертификаты вокруг, когда у вас есть ссылки на профили обеспечения

Ответ 8

У меня были проблемы с копированием сертификатов зомби в мой брелок, а идентификатор сертификата появился дважды. Простое удаление дублирующего сертификата не сработало.

В Xcode, когда я смотрю на мою подпись кода в целевой точке, я вспомнил, что у меня был другой профиль распределения в строках Ad Hoc, чем сборка "Release".

Когда я сгенерировал новый сертификат, я только загрузил новый профиль для Ad Hoc, а не для релизов.

Xcode висел в сертификате для обоих этих профилей, поэтому Xcode вызывал дубликаты сертификатов... потому что я забыл правильно обновлять свои профили.

Обязательно обновите ВСЕ профили подготовки к новому сертификату и одновременно измените ВСЕ профили в Xcode.

Be sure to update all your provisioning profiles with the new certificate, otherwise Xcode will try to put the certificate for BOTH profiles in the keychain... causing the duplicate error!

Ответ 9

У меня была эта проблема и прочитал каждую информацию об этом, наконец, я нашел решение самостоятельно. То, что люди не могли упомянуть, заключается в том, что ПРЕЖДЕ ЧЕМ очистка сертификатов в организаторе Xcode и ПЕРЕД очистка истекших ключей в цепочке ключей вам необходимо убедиться, что у вас нет истекли сертификаты в Provisioning Portal. Если у вас будет хотя бы один сертификат с истекшим сроком действия для старого приложения, которое использовало старый сертификат разработчика, Xcode потянет его в свой организатор с первой сборкой, и оттуда он перейдет к вашей цепочке ключей и вызовет дубликат.

Ответ 10

В моем случае "кэш" Xcode смотрел на подключенное устройство iOS. Чтобы определить, является ли это для вас проблемой:

  • Отключить все устройства iOS
  • Удалить оскорбительный сертификат и закрытый ключ из Keychain Access
  • Перезапустить Xcode
  • Проверить доступ к Keychain: в моем случае дубликат не был восстановлен в этот момент
  • Подключите устройство iOS
  • Перезапустить Xcode снова
  • Check Keychain Access: в моем случае дубликат был воссоздан в этот момент

Если это основная причина для вас, вы можете обойти его, убедившись, что вы отключили устройства iOS перед запуском Xcode.

Ответ 11

Простое удаление избыточного сертификата не работает для меня. Кажется, что каждый раз, когда вызывается xcodebuild, это "повторное создание" сертификата в цепочке ключей из кеша где-то... такая же проблема, как avi Я создал хак /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) из "login" в "system". Затем дубликаты волшебным образом снова появились, и я смог их удалить, а затем я перетащил сертификаты обратно в "login"

Ответ 13

Это очень просто, экспортируйте правильный сертификат на свой рабочий стол. Удалить этот сертификат в брелок. Попробуйте создать источник с сообщением об ошибке (не иметь сертификата). Затем снова импортируйте сертификат. = > Успех!

Ответ 14

Я просто удалил один из секретных ключей в моей цепочке ключей для сертификата, который мне больше не нужен.

Даже несмотря на повторный просмотр сертификата, но закрытый ключ не появляется. Теперь проверьте действительные сертификаты и появится только один сертификат, а остальные сертификаты, чей секретный ключ будет удален, больше не отображаются в действительных сертификатах.

Я думаю, что это самый простой способ решить эту проблему.

Ответ 15

Я имел дело с одной и той же проблемой один раз. И я решил это, удалив неиспользуемый профиль подготовки на вкладке "Организатор" в xcode. Фактически Keychain получит этот сертификат из этого профиля подготовки, который является либо истекшим сертификатом, либо сборкой с отмененным сертификатом.

Итак, вам просто нужно удалить этот профиль подготовки на вкладке "Организатор". Органайзер находится на правой стороне кнопки xcode. Откройте его, а затем в Organizer удалите профили подготовки, которые вы не используете.

Вот скриншот,

enter image description here

И не забудьте удалить дополнительный сертификат из брелка, но после этого этот сертификат больше не появляется.