Для этого есть два (возможно, три!) Компонента. Одним из них является брелок должен быть разблокирован. Во-вторых, в цепочке для ключей есть список контроля доступа, который сообщает, какие разрешения предоставляются приложениям в разблокированном состоянии. Таким образом, даже если у вас успешно разблокирована цепочка для ключей, если возможность доступа к закрытому ключу и подписи с ним не предоставлена /usr/bin/codesign
, вы все равно получите это сообщение. Наконец, если вы работаете в Mac OS Sierra, идентификатор раздела по умолчанию, назначенный для ключей, неверен, чтобы быть совместимым с двоичным файлом codesign
.
Решение выглядит следующим образом:
1) Если у вас есть доступ к графическому интерфейсу Keychain Access, то вы можете вручную предоставить доступ к каждой программе или / usr / bin / codesign, щелкнув правой кнопкой мыши свой закрытый ключ, выбрав вкладку «Контроль доступа» и затем выбрав « Разрешить всем приложениям доступ к этому элементу «радио» или к списку «Всегда разрешать доступ этим приложениям».
2) Если вы столкнулись с этой ошибкой, скорее всего, вы пытаетесь запустить codesign
для пользователя, не входящего в систему. В этом случае у вас явно нет доступа к графическому интерфейсу «Keychain Access». В этих случаях вы проверяете отсутствие авторизации sign
для приложения <null>
, что, по-видимому, означает все приложения, или, в частности, /usr/bin/codesign
, с помощью:
security dump-keychain -i login.keychain
Однако по какой-то причине вы не можете добавлять или изменять атрибуты контроля доступа в интерактивном режиме - удаляйте только! Вы фактически должны вручную удалить ключ и повторно добавить его в цепочку для ключей, указав флаг -T
.
security import login.keychain -P "<password>" -T /usr/bin/codesign
Где -T
указывает
-T Specify an application which may access the imported key (multiple -T options are allowed)
3) Если вы работаете в Mac OS Sierra, измените идентификатор раздела, включив в него раздел apple
. Предположительно, это пространство имен, назначенное codesign
, потому что оно было распространено Apple.
security set-key-partition-list -S apple-tool:,apple: -k "<password>" login.keychain
ПРИМЕЧАНИЕ : раздел apple-tool
вставляется инструментом security
, поэтому приведенная выше команда сохраняет этот раздел. Для получения дополнительной информации по этому аспекту см .: http://www.openradar.me/28524119