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

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

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

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

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

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

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

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

Я нажимаю «Добавить», а затем меня просят ввести пароль к связке ключей (который я оставляю пустым)

Затем я всегда вижу это сообщение в доступе к связке ключей:

скриншот ошибки

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

Далее для файла Roomer Inc.pem (открытый ключ) меня просят выбрать связку ключей («логин»), и я нажимаю «Добавить».

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

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

$ security import Roomer\ Inc.pem -f pkcs12 ~/Library/Keychains/login.keychain

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

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

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


person Jason FB    schedule 08.05.2014    source источник


Ответы (1)


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

Проблема на самом деле проблема UX с Keychain Access. Позвольте мне сделать резервную копию и дать небольшой контекст: когда вы создаете сертификат распространения с Apple, вы создаете его на основе ЧАСТНОГО КЛЮЧА и разрешений на основе приложения.

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

Итак, мой коллега создал сертификат распространения на основе закрытого ключа с именем «Хорхе Давила» (его имя), несмотря на то, что сертификат распространения назывался «Распространение iPhone: Roomer Inc.».

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

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

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

person Jason FB    schedule 08.05.2014