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

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

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


person Mugunth    schedule 09.05.2011    source источник
comment
возможный дубликат проблемы с сертификатом Xcode с истекшим сроком действия   -  person zoul    schedule 09.05.2011


Ответы (15)


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

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

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

Удачного кодирования.

person Louie    schedule 28.05.2011
comment
Еще один шаг! Вам необходимо открыть Организатор в XCode и обновить свои профили подготовки после удаления повторяющегося сертификата. - person Meekohi; 23.08.2012
comment
@Meekohi, что вы подразумеваете под «обновлением» моих профилей подготовки? Благодарность! - person abw333; 26.08.2012
comment
Повторный запуск Xcode решил для меня ту же проблему после того, как я удалил старый сертификат. - person Maxim Mikheev; 10.10.2012
comment
В Xcode 4 (у меня 4.4.1) мне пришлось удалить ВСЕ профили обеспечения, связанные со старым сертификатом. Затем я перезапустил Xcode, и старый сертификат перестал (волшебным образом) появляться в связке ключей. - person Roberto; 08.01.2013
comment
Это решение работает для меня, и мне также нужно перезапустить XCode. Спасибо! - person haxpor; 11.02.2013
comment
Также не забудьте разблокировать брелок перед модификацией. В противном случае изменение не сохраняется после перезагрузки. - person Heshan Perera; 22.04.2013
comment
У меня сработало с одним дополнением (я использую Xcode 4.6.3). Я удалил просроченные (или скоро истекающие) сертификаты, затем перезапустил Xcode, и у меня все еще была проблема - старые сертификаты каким-то образом снова появились в KeyChain Access. Итак, я перезапустил Xcode, но прежде, чем я выбрал свой проект для открытия, я вернулся в KeyChain Access, и старый сертификат снова был там, поэтому я удалил его. Затем я открыл свой проект (в уже работающем Xcode), и все было хорошо - я снова смог построить. - person Ed Sinek; 17.06.2013

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

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

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

  1. Выйти из Xcode
  2. Если доступ к Связке ключей открыт, оставьте его открытым.
  3. Запустите Xcode сейчас.
  4. Обратите внимание, что сертификат, на который жаловался Xcode, будет повторно добавлен в цепочку для ключей при запуске из его кеша.
  5. Удалите его.
  6. Скомпилируйте и счастливого кодирования.
person Mobilewits    schedule 28.09.2012
comment
Я попробовал все вышеперечисленные решения, и это помогло. Кажется, есть несколько причин / решений. - person Nathan Hangen; 26.11.2012
comment
+1: Я могу подтвердить, что XCode действительно хранит кеш сертификатов и добавляет их при запуске - ужасно, что он так работает! Это вызывает столько проблем! Позор вам, Apple, это привело к потере времени из-за борьбы с этим! - person JRG-Developer; 28.02.2013

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

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

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

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

Удачи!

person Sean Aitken    schedule 22.08.2012
comment
удаление закрытого ключа тоже сработало для меня - последнее обновление xcode, октябрь 2012 г., горный лев - person ina; 09.10.2012

Хорошо, нашел ответ на еще один «Связанный» вопрос. Проблема с сертификатом Xcode с истекшим сроком действия Известная проблема с Xcode 4 http://openradar.appspot.com/9173280

person Mugunth    schedule 09.05.2011
comment
У меня такая же проблема. Однако я не вижу ответа ни здесь, ни в других темах. Вам удалось это исправить? - person Cliff; 09.01.2012

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

Я считаю, что этот вопрос касается этой ситуации: Конфликты CodeSign между Developer и Enterprise Distribution

person Josh Metcalfe    schedule 04.10.2012

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

  1. удалите все сертификаты, связанные с вашей учетной записью, из связки ключей. ВЫЙТИ брелок

  2. удалите все профили обеспечения, связанные с вашей учетной записью, из xcode: организатор: устройство: Библиотека: профили обеспечения. ВЫЙТИ из xcode

  3. отозвать свой сертификат, восстановить его и загрузить на свой компьютер сборки

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

  5. Затем загрузите профиль обеспечения

  6. дважды щелкните сертификат, чтобы установить его на связку ключей

  7. перетащите профиль обеспечения в xcode: организатор: устройство: Библиотека: профили обеспечения

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

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

person ccs    schedule 22.06.2012

Ответ находится здесь

удалите все мои старые профили обеспечения, используя старый сертификат с помощью Организатора, затем выйдите из XCode, удалите старый сертификат из Связки ключей и перезапустите XCode.

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

person yeahdixon    schedule 16.11.2012

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

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

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

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

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

Обязательно обновите все свои профили обеспечения новым сертификатом, иначе Xcode попытается поместить сертификат для ОБЕИХ профилей в  связка ключей ... вызывает повторяющуюся ошибку!

person karlbecker_com    schedule 09.08.2012

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

person Segev    schedule 14.01.2013

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

  1. Отключите все устройства iOS
  2. Удалите проблемный сертификат и закрытый ключ из Связки ключей
  3. Перезапустить Xcode
  4. Проверьте доступ к связке ключей: в моем случае дубликат НЕ был воссоздан на этом этапе
  5. Повторно подключите устройство iOS
  6. Снова перезапустите Xcode
  7. Проверьте доступ к связке ключей: в моем случае дубликат был воссоздан на этом этапе

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

person Simon Whitaker    schedule 26.03.2013

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

person BadPirate    schedule 19.06.2012

В моем случае удаление сертификатов не помогло. XCode 4, кажется, кэширует или восстанавливает их. Уловка, которая наконец сработала для меня, заключалась в том, чтобы запустить связку ключей и xcode. Затем в связке ключей перетащите 2 моих сертификата (dev + dist) из «входа» в «систему». Затем дубликаты волшебным образом появились снова, и я смог их удалить, а затем перетащил сертификаты обратно в `` вход в систему ''

person Peter    schedule 07.07.2012

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

person Giang    schedule 09.07.2012

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

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

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

person swathy valluri    schedule 08.05.2013

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

Таким образом, вам просто нужно удалить этот профиль обеспечения со вкладки «Организатор». Организатор находится на правой верхней боковой кнопке xcode. Откройте его, а затем в Организаторе удалите профили подготовки, которые вы не используете.

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

введите описание изображения здесь

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

person Dilip    schedule 15.08.2013