После того, как set-key-partition-list codeign по-прежнему запрашивает доступ к ключам

Я импортирую файл PEM, содержащий общедоступные и закрытые ключи для моего идентификатора подписи кода с помощью следующей команды:

security import "${PEM_FILE}" -k ~/Library/Keychains/login.keychain -T /usr/bin/codesign -T /usr/bin/security

В OS X 10.11 El Capitan я мог бы codesign без подсказки:

codesign --force --sign "${IDENTITY_HASH}" --timestamp=none `mktemp`

Однако, поскольку другие имеют , OS X 10.12 Sierra теперь требуется, чтобы вы set-key-partition-list после import:

security set-key-partition-list -S apple-tool:,apple: -s -k "${PASSWORD}" ~/Library/Keychains/login.keychain

Однако даже после set-key-partition-list я все еще получаю диалоговое окно пользовательского интерфейса, запрашивающее разрешение на доступ к моему закрытому ключу для подписи кода:

" codeign хочет получить доступ к диалоговому окну

Если я нажимаю Always Allow, тогда будущие вызовы codesign не запрашивают, но я никогда не хочу, чтобы этот диалог интерфейса отображался. Я хочу, чтобы все это было написано сценарием.

Почему set-key-partition-list работает для других людей, а не для меня?

Ответ 1

В моей первоначальной команде import я не предоставил пароль для моей брелка. Если я поставлю пароль для команды import, set-key-partition-list предотвратит отображение диалогового окна:

security import "${PEM_FILE}" -k ~/Library/Keychains/login.keychain -P "${PASSWORD}" -T /usr/bin/codesign -T /usr/bin/security
security set-key-partition-list -S apple-tool:,apple: -s -k "${PASSWORD}" ~/Library/Keychains/login.keychain

Затем codesign не отображает диалоговое окно. Он просто работает!

codesign --force --sign "${IDENTITY_HASH}" --timestamp=none `mktemp`