Xcode 4 - переустанавливает сертификаты связки ключей, которые я удаляю


85

Я получаю эту ошибку:

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

Сначала я не беспокойся, я просто захожу в связку ключей и удаляю дубликат (более старый), что я и сделал. Я вернулся, закрыл Xcode, снова открыл Xcode и проект, та же ошибка. wtf я подумал про себя. Вернитесь в брелок, и сертификат снова там. Я удаляю оба сертификата, повторяю и замечаю, что при загрузке проекта два удаленных сертификата возвращаются в связку ключей.

После долгих поисков я убедился, что у меня нет сертификата в системной связке ключей, чего у меня не было. Также сделал чистку и восстановление. Когда у меня были дубликаты с Xcode 3, я мог просто убрать дубликат связки ключей, и все было хорошо. Но с Xcode 4 он буквально просто как-то переустанавливает их, когда я открываю проект. Я даже удалил все файлы .cer в своей системе, из которых они могли быть получены.

Какие-либо предложения?


1
Ура. Была такая же проблема. :)
RedBlueThing

Есть такая же проблема. Это происходит из-за того, что Связка ключей не удаляет сертификат должным образом, и у вас возникает ситуация, когда появляются 2 сертификата (но один недействителен). Просто удалите недействительный в приложении Связка ключей, и это будет нормально работать. Но это временное решение. :(
Сергей Копанев

Ответы:


103

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


Ага! Я могу подтвердить, что это работает. Несмотря на то, что я продолжал удалять тот, что был в связке ключей, он продолжал появляться. Как только я удалил старые профили Provisioning Profiles из Организатора, все стало нормально. Благодарность! :)
RoLYroLLs 03

1
У меня тоже работает! Благодарность! Я думаю, что XCode4 пытается сделать, это вставить сертификаты разработчиков в вашу цепочку для ключей для профилей Prov, которые отсутствуют, даже если срок действия сертификатов истек.
iphone007 07

5
Также не забудьте повторно создать свой профиль обеспечения, если вы обновили свой сертификат разработчика. Я этого не сделал, и когда я повторно добавил старый профиль Prov, связанный с ним сертификат разработчика с истекшим сроком действия был повторно вставлен в связку ключей, D'oh!
iphone007

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

Это помогает, но, как говорили другие, вам действительно нужно перейти к связке ключей и удалить истекший сертификат разработчика, а не только профиль подготовки.
Рон Сребро

33

У меня была такая же проблема, и приведенные выше решения не решили мою проблему (ну, почти).

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

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

Убедитесь, что вы видите просроченные сертификаты в KeyChain

Сделать это:

  1. Открытый доступ к связке ключей
  2. Щелкните меню " Просмотр "
  3. Нажмите Показать просроченные сертификаты.
  4. затем найдите и удалите истекшие сертификаты разработчика

Здорово, ты гений. Я сделал все, что перечислено везде. Вы помогли мне решить многомесячную проблему. Будьте здоровы!
Бушра Шахид

1
Оказалось, что у меня под системным брелком был просроченный сертификат. Это помогло мне его найти! Благодарность!
christopher_f

11

Xcode 4 имеет новую функцию «Автоматическая инициализация устройства». Он находится в органайзере под профилями библиотеки / обеспечения. Если у вас этот параметр включен, он автоматически загрузит ваши профили подготовки с сервера подготовки разработчиков Apple, и вы получите сообщение об ошибке наличия дубликатов. Самый простой способ исправить это - удалить все профили обеспечения и нажать «Обновить» для «Автоматической инициализации устройства». Это загрузит ваши профили подготовки с сервера и решит вашу проблему.


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

Это современное решение,
сработавшее

7

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

  • создайте новую цепочку для ключей, назовите ее «просрочено» и переместите в нее ТОЛЬКО просроченный сертификат.
  • удалите вновь созданную связку ключей с истекшим сроком действия, которая содержит ТОЛЬКО просроченный сертификат, при появлении запроса выберите «Удалить ссылки и файлы».

сертификат с истекшим сроком действия исчезает вместе с связкой ключей. отлично работал у меня.


6
  1. Удалите все профили подготовки из XCode Organizer;
  2. Удалите старые сертификаты разработчика из связки ключей;
  3. Создавать профили обеспечения только с правильным сертификатом разработчика;
  4. Загрузите и установите новые профили Provisioning Profiles;

-- РЕДАКТИРОВАТЬ --

Объедините ответ @ Codezy и комментарий @ iphone007.


Ваш ответ не устранил мою проблему, на самом деле я несколько раз удалял сертификаты разработчика и профили обеспечения, но старый сертификат разработчика всегда переустанавливается. Но комментарий @ iphone007 полезен, я просто объединяю их ....
г-н Мин

2

При удалении профилей подготовки в библиотеке Организатора дополнительно следует удалить сертификат разработчика iPhone в Связке ключей. (Название сертификата, вероятно, похоже на «iPhone Developer: XXXXX ...» и обозначено красным значком X, поскольку срок его действия истек)


Простое удаление и повторная установка профилей обеспечения в Организаторе не помогло, но ваше предложение удалить просроченный профиль из связки ключей устранило это для меня, спасибо!
gulchrider 04

2

Я потратил на это полдня и наконец нашел решение

  1. Откройте KeyChain Access.app
  2. Выберите «Система» в меню «Связки ключей» в левой части экрана приложения Связки ключей.
  3. В раскрывающемся меню «Категория» выберите «Сертификаты».
  4. Удалите все старые сертификаты.

Затем закройте Keychain.app и перейдите в Xcode -> Organizer.

  1. Удалить все профили обеспечения в меню библиотеки
  2. Удалить все профили подготовки в меню «Устройства»
  3. Нажмите кнопку «Обновить» в меню «Библиотека» -> «Профиль обеспечения».
  4. Добавьте необходимые профили на свое устройство

Создайте снова свое приложение :)


1

Для потомков вот стратегия, позволяющая обойти эту проблему в нашем сценарии автоматической сборки:

  1. Перед сборкой переместите каталог ~ / Library / MobileDevices / Provisioning Profiles в сторону
  2. Проверьте, запущена ли утилита настройки iPhone, и закройте ее (сертификаты всегда появляются снова, если это приложение открыто. В XCode 4.1 вам также необходимо закрыть органайзер).
  3. Беги, строишь
  4. Переместите каталог Provisioning Profiles назад
  5. Прибыль?

1

Я пробовал все, что здесь предлагалось, но у меня ничего не работало, кроме повторной установки XCode 4.3, которая волшебным образом решила этот случай.


1

Выяснил действительно простой способ исправить это в 4.6.1. Вы можете сделать это, ничего не перезагружая и не удаляя профили!

Когда Keychain Access и ваш проект Xcode открыт:

  1. В Xcode откройте Организатор - «Устройства» и выберите «команду» с дублирующим сертификатом.
  2. Переключитесь на Связку ключей и удалите старый дубликат сертификата (ов). Примечание. Убедитесь, что вы включили «показывать просроченные сертификаты», чтобы не пропустить ни одного.
  3. Сертификаты исчезнут из профиля «команды» в Xcode Organizer.
  4. Чистый проект и сборка.

Надеюсь, это поможет!


0

вышеуказанный метод не работает в моем случае

наконец, я иду к брелку

и найдите ключ, введя имя

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

это действительно расстраивает, и я не знаю, ошибка ли это ....... действительно утомляет.


0

Цитирование ответ на дубликат этого вопроса, некоторые ошибки Xcode в этой области может быть решена только путем перезагрузки OS X .

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


0

Как бы то ни было, @AndreasPrang, ваш ответ сработал, когда все вышеперечисленное - нет. Я мог видеть, что сертификат с истекшим сроком действия не был в цепочке для ключей, но когда я делал сборку, Xcode сказал, что это так. Удаление профилей обеспечения (всех их), выбор моего имени в разделе «Команда» и нажатие на значок обновления в правом нижнем углу органайзера также не помогли. Перезапуск Xcode не помог, но закрытие XCode и удаление ~ / Library / Developer / Xcode помогли. Когда я перезапустил XCode, он все перестроил и остался доволен.


0

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

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


0

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

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

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

(И я отправил администратору команды запрос на удаление старого сертификата.)


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.