Начиная с macOS Sierra, я больше не могу импортировать идентификатор кода в цепочку ключей с /usr/bin/security без пользовательского интерфейса usr/bin/codesign для доступа при использовании этого идентификатора. Это нарушает сценарии сборки сервера сборки. Кажется, нет обходного пути. Это касается настраиваемых цепочек ключей, но также и login.keychain.
Шаги по воспроизведению: Выполните следующие команды в терминале (для импорта необходимо наличие идентификатора подписи):
security create-keychain -p test buildagent.keychain
security unlock-keychain -p test buildagent.keychain
security list-keychains -d user -s buildagent.keychain
security default-keychain -s buildagent.keychain
security import identity.p12 -k buildagent.keychain -P password -T /usr/bin/codesign
codesign -vfs '$IDENTITY' '${PRODUCT}' --keychain 'buildagent.keychain'
Результат: macOS отображает пользовательский интерфейс, запрашивающий разрешение на доступ к ранее импортированному закрытому ключу.
Я пробовал много обходных решений, но ничего не работает:
- Использование нового расширения .keychain-db при указании имени keychain
- Использование имени login.keychain вместо пользовательского
- Импорт p12 с -A ("Разрешить любому приложению получать доступ к импортированный ключ ')
- Импортирование сертификата и ключа отдельно (извлечение от p12 до с openssl pkcs12)
Импорт идентичности определенно работает, я могу видеть сертификат и ключ при отображении содержимого брелка в приложении Keychain Access. Настройка контроля доступа для закрытого ключа также правильно настроена (с правилом исключения желаемого кода).
Как я могу избежать приглашения пользовательского интерфейса из Sierra?