Сертифікат розповсюдження / закритий ключ не встановлено


102

Використовуючи Xcode 9.1, після створення програми для iOS я хочу заархівувати її та завантажити до appStore для бета-тестування. Але після натискання кнопки Upload to the App Store...та вибору я отримую таку проблему Automatically manage signing:

"Моє ім’я" має один сертифікат розповсюдження iOS, але його закритий ключ не встановлено.

Я не знаю, чому цей "приватний ключ не встановлений", але сертифікат розповсюдження, можливо, був створений на іншому комп'ютері чи щось інше. У будь-якому випадку:

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

Відповіді:


82

Ви можете мати лише один сертифікат розповсюдження. Він об'єднує відкритий ключ, відомий Apple, з приватним ключем, який знаходиться в ланцюжку ключів якогось комп'ютера. Якщо цей сертифікат розповсюдження був створений на іншому комп’ютері, то закритий ключ знаходиться на ланцюжку ключів цього комп’ютера. І цей сертифікат розповсюдження не працює без нього.

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

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

У будь-якому випадку, приватний ключ або експортований сертифікат будуть захищені паролем. Вам потрібно буде знати пароль, щоб використовувати його.


1
Моє перше випробування після Вашої пропозиції не спрацювало. Швидше за все тому, що я зробив це неправильно. Одне запитання у мене - це перехід до Keychain Access, де був створений сертифікат. Як мені знайти приватний ключ? Схоже, в деяких місцях доступ до брелоків показує мільйони об'єктів, які називаються однаковими. Тож я взагалі не впевнений, що зробив цю частину як слід.
Мішель,

32
Що ж, надсилання листа самому собі із запитанням, яке я зараз вам задаю, швидше за все, не буде ефективним :)
Мішель

1
Але я все ще думаю, що ваша відповідь поставила мене на правильний шлях, тож мені потрібно ще трохи розібратися в цьому.
Мішель,

Нарешті я знайшов шлях до цього питання. Але я, на жаль, не закінчив весь підписний бізнес. Я зробив інший допис з окремим запитанням: stackoverflow.com/questions/47258499/…
Мішель,

Дякую за це @matt! У моєму випадку я створив сертифікат розповсюдження iOS, використовуючи CSR, який я створив на своєму пристрої, але тоді, коли я встановив його в брелок, приватний ключ не прив’язаний до сертифіката. Я можу скомпілювати, але я не знаю, де знаходиться закритий ключ, тому я не міг передати файл p12 своїм товаришам по команді. Хоча інший випадок, завдяки вашій пораді щодо переходу на область Облікові записи Xcode, я зміг експортувати її до p12. :) Зараз все добре, але мені просто цікаво, де, чорт візьми, схований приватний ключ, який не відображається разом із сертифікатом у брелоку.
KarenAnne

286

На сьогодні (липень 2020) (xcode 10-12)

  1. перейдіть до Xcode - Налаштування - Облікові записи - Керування сертифікатами
  2. Клацніть на +внизу ліворуч, а потімApple development
  3. Зачекайте трохи, потім натисніть Done

Це все. Можливо, ви захочете анулювати старий сертифікат на developer.apple.com .

Стара відповідь

Крок 1: - xcode -> продукт -> архіви -> Клацніть керувати сертифікатом введіть тут опис зображення

Крок 2: - додайте розподіл ios введіть тут опис зображення


7
Це не працює, оскільки нічого не відбувається, коли я натискаю знак плюса. Мені не дана опція для "Розподілу iOS".
arnoldbird

2
Якщо я отримую доступ до Керування сертифікатами через Xcode> Налаштування> Облікові записи, тоді знак плюс активний, як показано на кроці 2 вище.
arnoldbird

11
Це була б найкраща відповідь
kishorekumaru

2
Нічого собі :-D. Виправив це для мене. Або це не повинно бути можливим, або Xcode не повинен заважати вам це робити.
Джошуа Р.

3
Наразі в Xcode 10.3 Xcode - Налаштування - Облікові записи - Керування сертифікатами
Антон

26

Ця відповідь для команди "Одна людина", щоб швидко вирішити цю проблему, не читаючи занадто багато інформації про "Команду"

Крок 1) Перейдіть до веб-браузера, відкрийте свій обліковий запис розробника. Перейдіть до розділу Сертифікати, ідентифікатори та профілі. Виберіть Сертифікати / Виробництво. Ви побачите сертифікат, у якому відсутній закритий ключ, вказаний там. Клацніть Відкликати. І дотримуйтесь інструкцій, щоб видалити цей сертифікат. введіть тут опис зображення Крок 2) Ось і все! поверніться до Xcode, щоб перевірити свою програму. Тепер він попросить вас створити новий сертифікат. Тепер ви із задоволенням завантажуєте свої програми.


11

EDIT: Я думав, що інший комп’ютер мертвий, тому виправляю свою відповідь:

Вам слід експортувати сертифікат із першого комп’ютера з його закритим ключем та імпортувати його на новий комп’ютер.

Мені більше подобається спосіб iCloud, резервне копіювання до iCloud і завантаження його на новий комп’ютер.

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


2
Це страшна порада.
matt

4
Наскільки я знаю, нічого поганого не відбувається під час анулювання сертифіката. Чи знаєте ви щось інше?
Іцчак

Так; він може експортувати закритий ключ з комп’ютера 1 на комп’ютер 2. Те, що ви радите, призведе до того, що сертифікат розповсюдження перестане працювати на іншому комп’ютері! Чому , що добре?
matt

2
Я думав, що інший комп’ютер мертвий
Іцчак

7

Додайте сюди новий виробничий сертифікат , а потім завантажте файл .cer і двічі клацніть його, щоб додати його в брелок.

Зараз все буде добре, не забудьте перезапустити Xcode !!!


1
для мене помилка все-таки виникла, довелося натиснути плюс, щоб вона оновлювалась і працювала
Зак

6

анулювати весь сертифікат розповсюдження для developer.apple.com і перевірити свою програму в Xcode, з’явиться можливість створити новий сертифікат розподілу після того, як ви зможете експортувати ключ для подальшого використання.

Ця робота для мене.


5

Відповіді людей про наявність ключа від комп’ютера генеруються точними. Але якщо все ще не вдається, спробуйте перезапустити Xcode після встановлення сертифіката


4

Просто для всіх, хто проходить через це, відповіді вище є правильними, але це все одно може трохи заплутати, особливо якщо у вас є кілька сертифікатів. Це були кроки, які я зробив:

1) Спочатку зверніть увагу на дату у фактичному сертифікаті розповсюдження, у якій відсутній його приватний ключ. Потім перейдіть до програми для брелоків на іншому комп’ютері та введіть IOS у рядку пошуку. Він покаже всі ваші ключі розробника та розповсюдження IOS, тому вам доведеться знайти правильний.

2) Клацніть стрілку вправо кожного запису розподілу IOS, щоб відкрити сертифікат, знайти сертифікат із правильною датою та експортувати його, клацнувши правою кнопкою миші та вибравши експорт.

3) Потім просто імпортуйте його в ланцюжок ключів нового комп’ютера, і принаймні за допомогою XCode 9.3 він одразу розпізнає це і виправить помилку, щоб тепер ви могли завантажити досягнення.


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

4

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


2

У моєму випадку Xcode не отримував доступ до сертифікатів із брелока, я виконав ці дії:

  1. видалити сертифікати з брелока.
  2. перезапустіть mac.
  3. генерувати нові сертифікати.
  4. встановити нові сертифікати.
  5. чиста папка побудови -.
  6. побудувати проект.
  7. знову очистити папку побудови.
  8. архів зараз. Це працює Ось і все.

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