Не удается импортировать открытые или закрытые ключи для подписи кода с помощью 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:
однако, несмотря на это сообщение, когда я нажимаю 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". Таким образом, он экспортировал неправильный сертификат и не понимал, потому что были другие (некоторые истекли) с этим именем.
вот как выглядит правильный:
Это относительно нюансов проблема с УБ брелок доступа и факт что инструмент поиска не дает вам результатов, которые вы ожидаете. Я отправляю этот ответ в надежде, что другие могут найти его полезным.