Не удается импортировать открытые или закрытые ключи для подписи кода с помощью Keychain access (Mac OS X Mavericks)

при попытке создать проект iOS (в XCode) мне нужно импортировать открытые и закрытые ключи моего коллеги для удостоверения подписи кода, но я не могу этого сделать, потому что я получаю ошибку в Keychain Access, которая говорит: "произошла ошибка. Невозможно импортировать элемент. / Содержимое этого элемента не может быть извлечено"

ПОЛНАЯ ИНФОРМАЦИЯ:

Я получил два ключа от компьютера моего коллеги, экспортировал их из своего брелка в виде двух файлов:

Roomer Инк.p12 (закрытый ключ)

Roomer Inc.pem (открытый ключ)

когда он экспортировал их, он оставил пароль пустым (хотя мы также пытались с паролем "test" и получили те же результаты).

когда я дважды щелкните Roomer Inc.p12 (для закрытого ключа), он открывается в Keychain Access и promts мне выбрать брелок ("login" выбран по умолчанию)

Я нажимаю "добавить" , а затем мне предлагается ввести пароль к брелку (который я оставляю blank)

далее я всегда вижу это сообщение в Keychain access:

screenshot of error

однако, несмотря на это сообщение, когда я нажимаю OK, Я вижу новую запись закрытого ключа для "Roomer Inc". Обратите внимание, что эта запись является закрытым ключом в цепочке ключей "login", как и следовало ожидать, но не имеет срока действия (не так ли?)

далее, для Roomer Inc.PEM-файл (открытый ключ) меня просят выбрать брелок ("login"), и я нажимаю Add

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

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

$ security импорт Roomer Inc.pem-f pkcs12 ~/библиотека/брелки/логин.брелок

ключ 1 импортные.

когда я это делаю, хотя команда возвращает "1 импортированный ключ", я не вижу открытого ключа для" Roomer Inc " в окне доступа к связке ключей (я закрыл доступ к связке ключей и снова открыл его).

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

1 ответов


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

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

в Keychain Access сертификат распространения указан как дочерний под именем закрытого ключа, из которого он был создан. Вот catch: когда вы используете поле поиска в Keychain access (в моем случае мы вводили "Roomer", потому что это имя в нашем сертификате распространения), он не будет искать сертификат с этим именем, он будет искать сертификат, прикрепленный к закрытому ключу для этого имени.

таким образом, мой коллега создал сертификат распространения на основе закрытого ключа, который был назван "Jorge Davila" (его имя), хотя сертификат распространения был назван " iPhone Distribution: Roomer Инк."

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

вот как выглядит правильный:

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