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

111

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

Так что введите мой адрес электронной почты, и вот что я получу:

Указанный элемент не может быть найден в связке ключей.

Что я делаю не так?

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

Сергей
источник
1
Я получаю ту же ошибку. Не могли бы вы уточнить свой ответ или кто-нибудь, кто знает, как это сделать?
Iducool
9
У меня сработал перезапуск KeyChain Access :)
Мохит Падалия
1
Для тех, кто повторно использует закрытый ключ для второй цели подписи (например, installer+ application), см. Инструкции @ toland-hon ниже, в которых используется OpenSSL в командной строке для обхода ошибочного Keychain Accessприложения. Приведенные ниже шаги, которые направляют пользователей в Certificateраздел, по- Keychain Accessпрежнему НЕ работают при повторном использовании закрытого ключа для вторичной цели. Ручной CSR через openssl- жизнеспособный обходной путь.
tresf

Ответы:

303

Я решил это. Прежде чем запрашивать сертификат, убедитесь, что вы находитесь в разделе «Сертификаты» и выбрали «Центр сертификации Apple Worldwide Developer Relations».

Франческо
источник
7
Ты герой. Я выдергивал волосы, когда все остальные ответы не решали проблему.
BFeher
23
Боже мой, Apple WTF? Спасибо, Джон!
MattD
2
Это безумие. :(: P Что за фалуда ??? Серьезно, должно быть какое-то удобное для пользователя предупреждение или сообщение.
Адил Соомро
2
Я не подумал об этом ответе, потому что подумал, что это безумие. но это действительно работает. есть некоторые рыхлые части яблочной экосистемы, которые просто безумны :)
Alex
2
Это решило проблему для меня. Выбор моего старого закрытого ключа не сработал, как и отсутствие выбранного ключа. Как непонятно ...
zai chang
46

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

Вы можете создать открытый ключ из закрытого и импортировать его в свою цепочку для ключей, используя процедуру, описанную в разделе « Я потерял свой открытый ключ». Могу ли я восстановить его с помощью закрытого ключа?

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

Гена Гойхман
источник
Вы правы, как можно создать сертификат без открытого ключа :)
onmyway133 08
29

Перейдите в раздел « Сертификаты » и выберите « Центр сертификации Apple Worldwide Developer Relations » перед запросом сертификата.

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

атерешков
источник
21

Вы (возможно, случайно) запрашиваете Keychain Access для создания запроса на подпись сертификата с использованием существующего ключа . Если ключ выбран, когда вы переходите в меню « Связка ключей - Помощник по сертификации» , представленные параметры будут для этого выбранного ключа.

Выберите неключевой элемент в вашей связке ключей (например, сохраненный пароль) и снова перейдите в Keychain Access - Certificate Assistant, чтобы сгенерировать CSR в обычном режиме.

Фил Кэлвин
источник
Похоже, что OS X теперь по умолчанию использует первый выбранный элемент. Если вы просто выберете другую связку ключей (например, Систему) при ее создании, это должно решить проблему.
Джеймс Паркер,
Черт возьми, я бы никогда этого не догадался. Поговорим о плохом дизайне пользовательского интерфейса ...
d512 07
9

Даже у меня возникла эта проблема. Я решил эту проблему, выбрав All Itemsвместо Keysв Categoriesпанели , а затем пытается создать сертификат.

Попробуйте, это обязательно сработает.

naddy19
источник
Лучше перезагрузиться
knight2016 05
7

Это происходило со мной, я заметил, что пункт меню для создания запроса сертификата изменился с

Запросить сертификат в центре сертификации ...

к

Запросите сертификат у центра сертификации с «Мое имя» ...

Отметьте этот пункт меню

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

Дамо
источник
4
Это особенность Keychain Access. Если при переходе в это меню у вас выбран ключ, он предложит использовать этот ключ для создания запроса на подпись сертификата. (В этом случае параметры такие же, как при щелчке правой кнопкой мыши по клавише.) При выходе из системы выбор ключа будет отменен.
Фил Кэлвин
Вам не нужно выходить из системы и затем входить в систему. просто выйдите из брелка и откройте его снова, теперь не выбирайте ни одну из
записей
7

Моя цель состояла в том, чтобы создать CSR (запрос на подпись сертификата) с использованием моего существующего закрытого ключа для отправки в Apple для создания нового сертификата распространения iPhone. Я убедился, что Сертификаты были выбранной категорией слева. Я попытался щелкнуть правой кнопкой мыши свой закрытый ключ и нажать " Запросить сертификат у центра сертификации с импортированным закрытым ключом" и получил следующую ошибку при попытке сохранить его.

Указанный элемент не может быть найден в связке ключей.

Я также получил ту же ошибку, когда прошел через меню файлов: Связка ключей > Помощник по сертификатам

Из других источников в Интернете я узнал, что Keychain Access НЕ позволяет вам создавать новый CSR, если вы импортировали закрытый ключ, только если вы создали ключ локально из инструмента.

Вместо этого я экспортировал закрытый ключ и использовал openssl для создания нового CSR, который Apple приняла и теперь ссылается на новый импортированный закрытый ключ.

Экспорт закрытого ключа

  1. Щелкните правой кнопкой мыши закрытый ключ
  2. Экспорт
  3. Убедитесь, что выбран формат файла p12
  4. Сохранить
  5. Введите пароль (необязательно)
  6. Разрешить доступ к экспортному ключу
  7. Откройте Терминал и перейдите в экспортированный каталог.
  8. Извлечь ключ из контейнера p12

Будьте осторожны, так как закрытый ключ .pem больше не защищен паролем)

$ openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
Enter Import Password: ********************
MAC verified OK

Создание нового CSR с экспортированным закрытым ключом

$ openssl req -out Certificates.csr -key Certificates.pem -new
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:John Doe Dev Key
Email Address []:thon@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Пара замечаний:

  • Войти . если вы хотите, чтобы поле было пустым, или по умолчанию будет включать все, что указано в скобках [].
  • Общее имя (CN) должно быть вашим именем закрытого ключа (например, John Doe Dev Key).
  • Адрес электронной почты должен быть вашим адресом электронной почты (например, thon@example.com)
  • Все остальное должно быть пустым

Подтвердите свой CSR

$ openssl req -noout -text -in Certificates.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: CN=John Doe Dev Key/emailAddress=thon@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption
        

То, о чем вам следует позаботиться, находится в строке « Тема» и убедитесь, что это правильно.

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

Толанд Хон
источник
Та же проблема. Хотели сохранить тот же закрытый ключ (т.е. изначально использовался, developerID_installer.cerно хотите использовать его повторно developerID_application.cer). Инструкции Apple плохи, потому что они заставляют вас использовать глючный Keychain Accessили, что еще хуже, XCode. Я случайно наткнулся на это решение. Поддерживаю ваше голосование, потому что это именно то, чем я закончил.
tresf
4

у меня такая же проблема. Я могу создать CSR, а не создавать его, и возникает такая же ошибка.

тогда я могу поискать и найти решение, но не решить.

через некоторое время я смогу это решить.

мой доступ к связке ключей через первый ящик CSR. поэтому мой доступ к связке ключей заблокирован.

открыть> доступ к связке ключей> вверху дисплея доступа к связке ключей «Нажмите, чтобы разблокировать системную связку ключей»

Нажмите на нее и разблокируйте системную связку ключей, затем создайте файл CSR, а затем не получите эту ошибку.

Санджай Дамор
источник
2

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

Zgpeace
источник
1

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

Cedrick
источник
1

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

Эта ветка форума помогла мне: https://forums.developer.apple.com/thread/106938

Адриана Пинеда
источник
Спасибо! Это тоже была моя проблема. Возможно, это не проблема для большинства людей, но любой, у кого есть Yubikey, должен попробовать вытащить его и восстановить.
Филихп Басби
0

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

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

Амир
источник
0

Ссылка ниже решила проблему для меня. https://forums.developer.apple.com/thread/72863

В моем случае это был юбикей, который был постоянно подключен к моему Mac. После его удаления проблема решилась автоматически.

user1913523
источник
-14

Решено! Пришлось изменить «Сертификат пользователя» на «Подпись кода».

Сергей
источник
Что вы подразумеваете под заменой «Сертификат пользователя» на «Подписание кода»?
user500
Да, пожалуйста, я тоже сталкиваюсь с той же проблемой, что вы имеете в виду под «подписью кода? Где это?»
Habitante