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

104

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

«Мое имя» имеет один сертификат распространения iOS, но его закрытый ключ не установлен.

Я не знаю, почему этот «закрытый ключ не установлен», но сертификат распространения мог быть создан на другом компьютере или что-то в этом роде. В любом слючае:

Как проще всего получить недостающий закрытый ключ и установить его? Для того, чтобы все работало.

Мишель
источник

Ответы:

84

У вас может быть только один сертификат распространения. Он объединяет открытый ключ, известный Apple, с закрытым ключом, который находится в связке ключей какого-то компьютера. Если этот сертификат распространения был создан на другом компьютере, то закрытый ключ находится в связке ключей этого компьютера. И этот сертификат распространения без него не работает.

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

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

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

матовый
источник
1
Моя первая проба по вашему предложению не сработала. Скорее всего потому, что я не правильно сделал. У меня есть один вопрос: когда я перехожу к Keychain Access, где был создан сертификат. Как мне найти закрытый ключ? Кажется, что Keychain Access показывает в некоторых местах множество объектов с одинаковыми именами. Так что я совсем не уверен, что сделал это так, как должен.
Мишель
34
Что ж, отправка письма самому себе с вопросом, который я сейчас задаю вам, вряд ли будет эффективным :)
Мишель
1
Но я все же думаю, что ваш ответ направил меня на верный путь, поэтому мне нужно немного углубиться в него.
Мишель
Я наконец нашел способ обойти эту проблему. Но, к сожалению, я еще не закончил подписывать документы. Я сделал другой пост с отдельным вопросом: stackoverflow.com/questions/47258499/…
Мишель,
Спасибо за это @matt! В моем случае я создал сертификат распространения iOS, используя CSR, который я создал на своем устройстве, но затем, когда я установил его в цепочке для ключей, закрытый ключ не привязан к сертификату. Я могу скомпилировать, но я не знаю, где находится закрытый ключ, поэтому я не мог передать файл p12 своим товарищам по команде. Хотя это и другой случай, благодаря вашему совету по переходу на панель учетных записей Xcode я смог экспортировать его в p12. :) Теперь все в порядке, но мне просто интересно, где, черт возьми, этот закрытый ключ скрыт, который не отображается вместе с сертификатом в цепочке для ключей.
KarenAnne
293

Актуально (июль 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
12
Это был бы лучший ответ
Кишорекумару 03
2
Вау :-Д. Исправил для меня. Либо это невозможно, либо Xcode не должен вас беспокоить.
Джошуа Р.
3
В настоящее время в Xcode 10.3 Xcode - Настройки - Учетные записи - Управление сертификатами
Антон
27

Этот ответ предназначен для "One Man" Team, чтобы быстро решить эту проблему, не читая слишком много информации о "Team"

Шаг 1) Перейдите в веб-браузер, откройте свою учетную запись разработчика. Перейдите в раздел Сертификаты, идентификаторы и профили. Выберите Сертификаты / Производство. Вы увидите сертификат, в котором отсутствует закрытый ключ. Щелкните Отозвать. И следуйте инструкциям, чтобы удалить этот сертификат. введите описание изображения здесь Шаг 2) Вот и все! вернитесь в Xcode, чтобы проверить ваше приложение. Теперь он попросит вас создать новый сертификат. Теперь вы с радостью загружаете свои приложения.

Павел
источник
11

РЕДАКТИРОВАТЬ: Я думал, что другой компьютер мертв, поэтому я исправляю свой ответ:

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

Я предпочитаю использовать iCloud, делать резервную копию в iCloud и загружать ее на новый компьютер.

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

Ицхак
источник
2
Это ужасный совет.
matt
4
Насколько мне известно, при отзыве сертификата ничего страшного не происходит .. Знаете что-то еще?
Ицхак
Да; он может экспортировать закрытый ключ с компьютера 1 на компьютер 2. Ваши рекомендации приведут к тому, что сертификат распространения перестанет работать на другом компьютере! Почему , что хорошо?
matt
2
Я думал, что другой компьютер мертв
Ицхак
7

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

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

Fujianjin6471
источник
1
для меня ошибка все еще возникала, пришлось нажать на плюс, чтобы она
Zack
7

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

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

Сохаиб Сиддик
источник
5

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

MobileMon
источник
4

Просто для всех, кто проходит через это, приведенные выше ответы верны, но это все еще может немного сбивать с толку, особенно если у вас есть несколько сертификатов. Вот шаги, которые я предпринял:

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

2) Щелкните стрелку вправо для каждой записи распределения IOS, чтобы открыть сертификат и найти сертификат с правильной датой, и экспортируйте его, щелкнув правой кнопкой мыши и выбрав экспорт.

3) Затем просто импортируйте его в связку ключей нового компьютера, и, по крайней мере, с XCode 9.3 он сразу же распознает его и исправит ошибку, чтобы теперь вы могли загрузить свои достижения.

Сэм
источник
Спасибо! Я бы добавил, что в представлении по умолчанию вы не видите стрелку влево, которая позволяет раскрыть ключ, чтобы открыть сертификат. Вам нужно выбрать Ключи в панели Категории. Только после этого вы можете выбрать сертификат и экспортировать его. Если вместо этого вы экспортируете закрытый ключ, вы получите сообщение об ошибке при его импорте на другой компьютер.
Clafou
4

Если вы используете сертификат на новом компьютере или нет. Проще всего отозвать предыдущий сертификат, относящийся к проекту. Затем повторно загрузите в магазин. Xcode сгенерирует новый.

Чинеду Это
источник
2

В моем случае Xcode не обращался к сертификатам из связки ключей, я выполнил следующие шаги:

  1. удалить сертификаты из связки ключей.
  2. перезапустите Mac.
  3. генерировать новые сертификаты.
  4. установить новые сертификаты.
  5. чистая папка сборки.
  6. построить проект.
  7. снова чистую папку сборки.
  8. архив сейчас. Работает Вот и все.
М. Мубин Асиф
источник
1
  1. перейдите по этой ссылке https://developer.apple.com/account/resources/certificates/list

  2. найдите имя сертификата в загрузке оповещения, затем

  3. Отозвать сертификат,

  4. если у вас есть сертификат, скачай снова
  5. загрузить тестовый полет снова
Папон Smc
источник