Добавить код в закрытый ключ ACL без Keychain - PullRequest
14 голосов
/ 22 января 2011

Я пытаюсь настроить непрерывную сборку / интеграцию для стабильной версии приложений iPhone.

У меня есть:

  • Выделенный Mac Mini.
  • Учетная запись пользователя с именем "build"
  • Hudson , настроенный как LaunchAgent для сборки, путем удаления plist в / Users / build / Library / LaunchAgents
    • Пробовал как общесистемный LaunchDaemon, работающий от имени hudson, но затем не имел доступа к цепочке для ключей входа пользователя сборки. Длинная история, полная душевной боли.
  • Система настроена на автоматический вход "build" при запуске, так что Hudson начинает работать.

Большая проблема - кодирование и связка ключей.

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

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

Предполагается, что это диалоговое окно изменяет список управления доступом (ACL) цепочки для ключей, так что кодовый знак разрешен.

Вы можете просмотреть это, открыв Keychain Access, развернув сертификат, выбрав закрытый ключ, щелкнув правой кнопкой мыши, выбрав Get Info, а затем переключившись на вкладку Access Control. «Девственный» ключ будет иметь доступ к связке ключей только в своем списке «всегда разрешать». Тот, который вы использовали и подтвердили в диалоговом окне, также будет иметь кодовый знак.

В этом поле можно добавить приложение, за исключением того, что вы получаете стандартный инструмент выбора файлов Finder, который скрывает папки Unix. Нет способа перейти к / usr / bin / codesign. Поэтому невозможно добавить вручную!

Кто-нибудь знает способ обойти это?

Мне известен один метод , использующий ключ -T «импорт безопасности», но затем вы должны указать ACL при импорте ключа в первую очередь, поэтому все ключи добавляются в связку ключей. Графический интерфейс должен быть брошен и повторно импортирован. Не совсем красиво.

Ответы [ 4 ]

18 голосов
/ 22 марта 2011

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

  1. Получить обычные окна Finder, чтобы показать все файлы. Если вы не знаете, как это сделать, прочитайте эту статью .
  2. В обычном окне Finder перейдите в / usr / bin
  3. Перетащите корзину в область «Метки» на боковой панели. Теперь bin - это ярлык, к которому можно получить доступ из любого места.
  4. На панели «Информация» -> «Контроль доступа» в связке ключей нажмите кнопку «+», чтобы открыть диалоговое окно поиска приложения.
  5. Нажмите на корзину, которая сейчас находится под Местами на этой боковой панели.
  6. Перейдите к и выберите кодовый знак.
  7. Нажмите кнопку Сохранить изменения.
5 голосов
/ 25 апреля 2014

Просто зарегистрировался, чтобы сказать СПАСИБО большое, Дэвид Бойк. Отличный обходной путь, который мне очень помог. Но есть лучший способ сделать это.

Open File Dialog press 'Cmd' + 'Shift' + '.'

Эта комбинация должна переключать видимость скрытых элементов в файловой системе. Если комбинация оказалась неэффективной, попробуйте изменить режим презентации на «список» или «сетка» и повторите попытку.

Спасибо и удачи!

4 голосов
/ 16 марта 2011

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

#!/usr/bin/osascript
tell application "System Events"
  tell window 1 of process "SecurityAgent"
    click button "Always Allow" of group 1
  end tell
end tell
3 голосов
/ 26 апреля 2013

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

В статье показано добавление сертификата таким образом с опцией -A, но у меня это не сработало.В вопросе упоминается опция -T, которая работает для меня.

security import "Distribution.p12" -k appledev -f pkcs12 -P "" -T /usr/bin/codesign
...