Помилка кодування: ідентифікатор сертифіката з’являється двічі


103

Помилка CodeSign: Ідентифікатор сертифіката "Розробник iPhone: XXXX (12345678)" з’являється не один раз у брелоку. Інструмент кодового дизайну вимагає наявності лише одного.

Тому я заходжу до свого брелка і видаляю його. Але я отримую цю помилку щоразу, коли перезавантажую Xcode 4, і деякий додаток додає минулий сертифікат, що минув назад, у брелок. Будь-які ідеї, чому і яке додаток?


Відповіді:


99

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

Швидке виправлення: відкрийте КЛЮЧОВИЙ ДОСТУП> натисніть МОІ СЕРТИФІКАТИ> там ви, мабуть, побачите iPhone Developer:. Ви, мабуть, побачите це ДВОЙ! Виберіть той, який має найдавнішу дату закінчення терміну придатності, клацніть правою кнопкою миші та виберіть УВІЙТИ.

Перезапустіть Xcode, якщо ви цього не зробили. Працює зараз. :)

Щасливе кодування.


27
Ще один крок! Вам потрібно відкрити Організатор у XCode та оновити свої профілі резервування після видалення дубліката сертифіката.
Meekohi

@Meekohi, що ти маєш на увазі під "освіженням" моїх профілів резервування? Дякую!
abw333

7
Після повторного запуску Xcode ця проблема вирішилася і для мене після видалення старого сертифіката.
Максим Міхеєв

У Xcode 4 (у мене 4.4.1) мені довелося видалити ВСІ профілі забезпечення, пов’язані зі старим сертифікатом. Потім я перезапустив Xcode і старий сертифікат перестав (магічно) перестати з’являтися на брелоку.
Роберто

3
Працював для мене з одним доповненням (я використовую Xcode 4.6.3). Я видалив certs (чи швидше закінчився термін дії) certs, потім перезапустив Xcode і у мене все ще була проблема - старі certs якимось чином з’явилися в KeyChain Access. Отже, я перезапустив Xcode, але перш ніж обрати проект для відкриття, я повернувся до KeyChain Access, і старий сертифікат знову був там, тому я його видалив. Потім я відкрив свій проект (у вже працюючому Xcode) і все було добре - я зміг будувати заново.
Ед Синек

71

Я думаю, я зрозумів, чому просте видалення не працює. Оскільки сертифікат dev все ще зберігається в профілі надання, коли я закриваю / повторно відкриваю Xcode після видалення сертифіката в Keychain, я побачив, як старий сертифікат повертається. Тож я знову її видаляю. Це спрацювало.

Просте рішення про видалення профілю для мене не вийшло.

Рішення, яке працювало в моєму випадку:

  1. Закрити Xcode
  2. Якщо доступ до брелка відкритий, тримайте його відкритим.
  3. Запустіть Xcode зараз.
  4. Дивіться, що сертифікат, на який скаржився Xcode, буде знову доданий у брелок при запуску із свого кешу.
  5. Ідіть і видаліть його.
  6. Компілювати та радісно кодувати.

3
Я спробував усі вищеперелічені рішення, і цей зробив трюк. Здається, існує кілька причин / рішень.
Натан Ханген

+1: Я можу підтвердити, що XCode дійсно зберігає "кеш" сертифікатів і додає їх при запуску-- жахливо, що він працює таким чином! Це викликає стільки проблем! Сором вам Apple, це спричинило години втраченого часу через боротьбу з цим!
JRG-Developer

10

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

У моєму випадку, відповідний приватний ключ знаходився в системному брелоку, і якраз мав своє ім’я (важко сказати, що це було для забезпечення). Мені довелося:

  • Перемістіть асоційований приватний ключ до брелока "вхід"
  • Перезавантажив Xcode і помітив, що приватний ключ тепер відображається як асоційований (підтверджує, для чого це потрібно)
  • Видаліть сертифікат і приватний ключ
  • Перезавантажте Xcode та пуф! Він перестав додавати мій старий серт

Цікавим є зауваження, що коли ви видаляєте сертифікат, він не видаляє пов'язаний приватний ключ. Візуально він показує приватний ключ нижче cert. Не обманюйте.

Удачі!


видалення приватного ключа працювало і для мене - останнє оновлення xcode жовтня 2012 року гірський лев
іна


4

Якщо ви є учасником програм iOS Developer і Enterprise iOS Developer і ви ввели ім’я компанії в одних і тих же обох програмах, ви отримаєте два дійсних сертифікати розповсюдження з тим самим іменем.

Я вважаю, що це питання вирішує таку ситуацію: зіткнення CodeSign між розробником та корпоративним дистрибутивом


3

У мене така ж проблема з xcode45-DP1. це працює для мене:

  1. видаліть усі сертифікати, пов’язані з вашим обліковим записом, із брелка. БІЛО брелок

  2. видалити всі профілі резервування, пов’язані з вашим обліковим записом, з xcode: организатор: пристрій: Бібліотека: профілі забезпечення. ХВИЛИ xcode

  3. анулюють ваш сертифікат і відновлюють його та завантажують на свою машину збирання

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

  5. Потім завантажте профіль резервування

  6. двічі клацніть на сертифікаті, щоб встановити його на брелок

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

  8. не натискайте кнопку оновлення з xcode.

  9. зробити нарощування.


3

Відповідь тут

видаліть усі мої старі профілі резервування за допомогою старого сертифіката за допомогою Організатора, а потім вийдіть з XCode, видаліть старий сертифікат із Keychain та перезавантажте XCode.

схоже, що xcode буде зберігати сертифікати, коли у вас є посилання на профілі забезпечення


1

У мене виникли проблеми з переповненням сертифікатів зомбі в мою брелок, а посвідчення сертифіката з’являлося двічі. Просто видалити дублікат cert не вийшло.

У Xcode, коли я дивився на підпис коду в цілі, я згадав, що у мене було інший профіль розподілу в "Ad Hoc" збірках, ніж "Release".

Коли я створив новий сертифікат, я завантажив новий профіль лише для спеціальних збірок, а не для версій версій.

Xcode висів на сертифікаті обох цих профілів, і тому Xcode викликав повторювані сертифікати ... тому що я забув належним чином оновити свої профілі.

Не забудьте оновити ВСІ ваші профілі забезпечення до нового сертифіката та змінити ВСІ профілі одночасно в Xcode.

Не забудьте оновити всі свої профілі резервування новим сертифікатом, інакше Xcode спробує помістити сертифікат для BOTH профілів у брелок ..., що спричинить повторювану помилку!


1

У мене була ця проблема і я прочитав кожну інформацію про неї, нарешті знайшов рішення самостійно. Що люди не змогли згадати, це те, що ПЕРЕД очищенням сертифікатів в організаторі Xcode та ПЕРЕД очищенням ключів із минулим терміном у вашому брелоку вам потрібно переконатися, що у вас немає сертифікатів простроченого терміну на порталі надання . Якщо у вас є навіть один сертифікат з минулим терміном дії для старого додатка, який використовував старий сертифікат розробника, Xcode перетягне це в його організатор із першим складанням, і звідти він перейде до вашої брелок і викличе дублікат.


1

У моєму випадку «кеш», на який дивився Xcode, був приєднаним пристроєм iOS. Щоб визначити, чи це проблема для вас:

  1. Відключіть усі пристрої iOS
  2. Видаліть сертифікат і приватний ключ із порушеннями з Keychain Access
  3. Перезавантажте Xcode
  4. Перевірте доступ до брелка: у моєму випадку дублікат НЕ відтворився на даний момент
  5. Повторно підключіть пристрій iOS
  6. Перезапустіть Xcode ще раз
  7. Перевірте доступ до брелка: у моєму випадку дублікат був відтворений у цей момент

Якщо це першопричина для вас, ви можете її обійти, переконайтесь, що ви відключите пристрої iOS перед запуском Xcode.


0

Просто видалення зайвого сертифіката для мене не вийшло. Здається, що кожного разу, коли викликається xcodebuild, це "знову створює" сертифікат у брелоку з кешу десь ... та сама проблема, як avi, я створив хак / виправлення для нього, намагався знайти, де файл кешується і ясно, але не пощастило. Зрештою, те, що для мене спрацювало (трохи хак, але ей, що ще можна зробити), було розібратися, що таке номер сертифіката, і вручну вийняти його з брелока незабаром після виклику xcodebuild. Спочатку перейдіть до каталогу / usr / bin / (або будь-який каталог, у якому є ваш файл xcodebuild, спробуйте which xcodebuild) та запустіть таку команду:

sudo mv xcodebuild xcodebuild_actual

Потім створіть файл за допомогою свого улюбленого редактора (не забудьте судо) із наступним кодом:

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, щоб мати доступ для запуску цієї конкретної команди без необхідності введення пароля.

Замініть шестнадцяткову особу після -З вище на шестнадцяткову ідентифікацію зомбі-порушення. Нарешті, переконайтеся, що файл xcodebuild працює:

sudo chmod 755 xcodebuild 

Тепер ви можете відкрити брелок, запустити команду збірки та спостерігати за тим, як відновлюється злочинний сертифікат зомбі, а потім ретельно вистрілюється перед тим, як це стане проблемою для створення коду. Сподіваємось, Apple придумає справжнє виправлення цього.


0

У моєму випадку видалення сертифікатів не спрацювало. XCode 4, схоже, кешує або відновлює їх. Трюк, який нарешті спрацював для мене, полягав у тому, щоб запустити брелок і xcode. Потім в брелок перетягніть мої 2 сертифікати (dev + dist) з "входу" в "систему". Потім дублікати чарівно з’явились, і я зміг їх видалити, а потім я перетягнув сертифікати назад на «логін»


0

Це дуже просто, експортуйте правильний сертифікат на робочий стіл. Видаліть цей сертифікат у брелок. Спробуйте створити джерело з повідомленням про помилку (не мати cert ..). Потім знову імпортуйте сертифікат. => Успіх!


0

Щойно я видалив один із приватних ключів у моїй брелоку для отримання сертифіката, який мені більше не потрібен.

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

Я думаю, що це найпростіший спосіб вирішити це питання.


0

Я колись мав справу з тією ж проблемою. І я вирішив це, видаливши невикористаний профіль забезпечення на вкладці Організатор у xcode. Насправді Keychain отримає той сертифікат із цього профілю забезпечення, який є або закінченим сертифікатом, або складеним відкликаним сертифікатом.

Тому вам просто потрібно видалити цей профіль надання з вкладки Організатор. Органайзер знаходиться в правій верхній частині кнопки xcode Відкрийте його, а потім в Організаторі видаліть профілі резервування, які ви не використовуєте.

Ось скріншот,

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

І не забудьте видалити додатковий сертифікат із брелка, але після цього цей сертифікат не з’явиться знову.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.