Codesign error: дважды появляется идентификатор сертификата - PullRequest
104 голосов
/ 09 мая 2011

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

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

Ответы [ 15 ]

99 голосов
/ 28 мая 2011

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

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

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

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

71 голосов
/ 28 сентября 2012

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

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

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

  1. Выйти из Xcode
  2. Если доступ к связке ключей открыт, оставьте его открытым.
  3. Запустите Xcode сейчас.
  4. Обратите внимание, что сертификат, на который жаловался Xcode, будет повторно добавлен в цепочку для ключей при запуске из его кэша.
  5. Иди и удали его.
  6. Компиляция и удачное кодирование.
9 голосов
/ 23 августа 2012

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

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

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

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

Удачи!

4 голосов
/ 04 октября 2012

Если вы являетесь участником программ iOS Developer и Enterprise iOS Developer и ввели одно и то же название вашей компании для обоих приложений, вы получите два действительных сертификата распространения с одинаковым именем.Я полагаю, что этот вопрос решает эту ситуацию: Конфликты CodeSign между разработчиком и Enterprise Distribution

4 голосов
/ 09 мая 2011

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

3 голосов
/ 17 ноября 2012

Ответ здесь

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

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

3 голосов
/ 23 июня 2012

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

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

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

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

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

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

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

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

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

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

1 голос
/ 26 марта 2013

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

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

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

1 голос
/ 14 января 2013

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

1 голос
/ 09 августа 2012

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

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

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

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!

...