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


171

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

С профилем разработчика все работает хорошо, но когда я установил сертификат и профиль обеспечения, я не увидел профиль распространения в XCode, и при этом у меня нет личного ключа под dist-cert в цепочке для ключей.

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


2
Иногда закрытый ключ отсутствует, потому что мы пытаемся создать сертификаты с .CSR, которые были созданы на любом другом компьютере. Поэтому убедитесь, что ваш CSR-файл также должен быть создан на том же компьютере, на котором вы пытаетесь создать и установить сертификат. Или вы можете использовать .p12 сертификатов, чтобы избежать этой проблемы
MAhipal Singh

2
В моем случае у меня есть два идентичных сертификата подписи в моей цепочке для ключей ... Было решено просто удалить один из них ... На всякий случай ...
juanram0n

Ответы:


168

введите описание изображения здесьАаа, это общая проблема, решение простое:

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

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


36
Чтобы быть более конкретным, вам нужен файл .p12 (экспортированный)
mkral

7
@Nirma Что делать, если у нас нет доступа к тому компьютеру, с которого изначально были созданы учетные данные разработчика.
Нишад Арора

@NishadArora Вам нужно будет создать новый ключ для использования. Нет способа использовать его без закрытого ключа. AFAIK
Джошуа Пинтер

2
@Nirma Как создать новые один
Мучжу

Если это кому-нибудь поможет, после установки открытого сертификата и закрытого ключа (проверил в Keychain Access и он показывал), мне также пришлось перезапустить Xcode, чтобы он забрал закрытый ключ. Использование Xcode 11.6 на OSX 10.15.5.
NHol

70

Пока у вас все еще есть доступ к mac, который использовался для создания оригинального сертификата распространения, это очень просто.

Просто используйте приложение Mac Keychain Access, чтобы экспортировать как сертификат, так и закрытый ключ. Выберите оба с помощью shift или command и щелкните правой кнопкой мыши, чтобы экспортировать в файл .p12.

Прикрепил скриншот, чтобы было очень понятно.

На вашем Mac импортируйте этот файл .p12, и все готово (просто убедитесь, что у вас есть действующий профиль обеспечения).

Просто выберите экспорт


55

Чтобы добавить к ответам других, если у вас больше нет доступа к этому секретному ключу, довольно просто вернуться к работе:

  1. отозвать ваш активный сертификат на портале обеспечения
  2. создать новый сертификат разработчика (доступ к цепочке для ключей /.../ запрос для csr ... и т. д.)
  3. скачать и установить новый сертификат
  4. создать новый профиль обеспечения для существующего идентификатора приложения (на портале подготовки)
  5. скачайте и установите новый профиль обеспечения и в сборке настройте соответствующие идентификаторы подписи кода

13
Здесь у меня в компании всегда бардак, никто не знает, на каком компьютере был создан определенный сертификат. Просто лучше отозвать и воссоздать
user2387149

1
@ user2387149 Я здесь 6 лет спустя, чтобы предложить CI / CD сделать такие вещи и забыть о распространении через xCode.
Эдгар Салазар

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

15

Удалите существующий из KeyChain, получите и добавьте файл .p12 на ваш Mac, откуда был создан сертификат.

Чтобы получить .p12 с исходного Mac, перейдите в KeyChain, разверните сертификат, выберите оба и экспортируйте 2 элемента. Это сохранит файл .p12 в вашем регионе:

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


8

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


6

После того, как вы изменили Mac, не являющийся исходным, который создал сертификат распространения, вы потеряете закрытый ключ. Просто удалите исходный сертификат и заново создайте новый, который мне подходит ~


5

Когда я пытаюсь загрузить сборку iOS для тестового полета, появляется ошибка.

"Missing privacy key",

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

Всего 2 шага для исправления этой ошибки.

  1. Удалить старый сертификат из developer.apple.com
  2. Создайте новый сертификат из Xcode или developer.apple.com

Моя проблема была решена (я использую Xcode 9.4.1).

Пожалуйста, проверьте, Xcode создал новый сертификат.

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


5

Для человека , который испуганы на повторное создание AppStore распределения сертификатов Apple , документация говорит:

Важное замечание. Повторное создание сертификатов разработки или распространения не влияет на приложения, отправленные в App Store, и не влияет на их возможность их обновления.

Но это влияет на приложения для экосистемы Apple Developer Enterprise .


4
если у вас есть корпоративный аккаунт!
MobileMon

Под "экосистемой предприятия" .... Например. Вы говорите, работаете ли вы в большой компании, и у 100 разработчиков есть этот закрытый ключ для этого конкретного приложения?
Petrosmm

2

В меню> Visual Studio (mac)> «Настройки»> «Публикация»> «Учетные записи разработчиков Apple»> [выберите идентификатор Apple]> «Подробно»> «Создать сертификат».

Чтобы удалить неиспользуемые / недействительные сертификаты, перейдите на веб-сайт: https://developer.apple.com/account/resources/certificates/list

удалите любой нежелательный сертификат там

Далее необходимо создать идентификатор приложения (идентификаторы), перейдите на веб-сайт:
https://developer.apple.com/account/resources/identifiers/list

Затем перейдите на веб-сайт для создания профилей обеспечения:
https://developer.apple.com/account/resources/profiles/add

используйте сертификат для привязки к идентификатору вашего приложения.

Далее необходимо загрузить профили:
На вашем Mac> В меню> Visual Studio (mac)> Предпочтения> Публикация> Учетные записи Apple для разработчиков> [Выберите идентификатор Apple]> Просмотреть сведения> Загрузить все профили


1

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


1

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

Затем я попытался получить закрытый ключ или создать новый сертификат. От менеджера сертификатов в XCode я получил странные ошибки, такие как «Введенная вами неверная фраза». Но он даже не попросил у меня никакой парольной фразы.

Что помогло мне было:

  1. Отмените все неработающие сертификаты распространения на developer.apple.com.
  2. Перезагрузите мой Mac

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

Извлеченный урок: перезагрузите Mac столько же, сколько и Windows;)


0

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

Поэтому перетащите .cer в логин и проверьте, можете ли вы получить закрытый ключ или нет.


0

Просто чтобы пролить свет на это.

После того как я удалил свой сертификат p12 из связки ключей. Я заново загрузил свой собственный сертификат с портала разработчиков Apple.

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

  • экспортируйте как закрытый ключ, так и сертификат из связки ключей, чтобы получить его.

  • Загрузите запрос на подпись сертификата и создайте новые сертификаты

Этот сертификат сам по себе не имеет значения для целей подписания. Я предполагаю, что закрытый ключ создается связкой ключей в тот момент, когда вы «запрашиваете сертификат у центра сертификации», но не отображается, пока вы не добавите его связующий сертификат.

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