Подтвердить что ты не робот

Удалите секретный ключ из брелка для ключей Mac OS X с помощью терминала

Я импортировал идентификатор разработчика (сертификат + закрытый ключ) для разработки iOS в цепочку ключей, используя приложение "security" Terminal с командой

security import identity.p12 -k <keychain> -P <passphrase>

Это импортирует оба элемента, включенные в файл p12, сертификат и закрытый ключ, в данную цепочку ключей. Однако я забыл указать -T /usr/bin/codesign, который добавляет приложение codeign в список доступа закрытого ключа. Я попытался добавить приложение для кодов в список доступа безрезультатно:

  • Я попытался повторно импортировать идентификатор с добавленным параметром, но, похоже, не изменил список доступа к закрытому ключу.
  • Я также попытался удалить сертификат из брелка с помощью security delete-certificate и повторно импортировать. Это не изменяет список доступа закрытого ключа.

Так как у меня только ssh доступ к машине, использование приложения Keychain GUI не будет работать. Поэтому я ищу способ удалить закрытый ключ из связки ключей (чтобы впоследствии я смог повторно импортировать идентификатор). Я проверил man-страницу инструмента security, но не нашел средства для удаления закрытого ключа.

Можно ли каким-либо образом удалить закрытый ключ из связки ключей только с помощью команд терминала (поскольку у меня есть только ssh-доступ к рассматриваемой машине)?

4b9b3361

Ответ 1

В вашей системе есть несколько брелок:

sudo security list-keychains
"/Users/JonDoe/Library/Keychains/login.keychain"
"/Library/Keychains/System.keychain"

Я думаю, вы импортировали его в System-Keychain: Сначала сделайте резервную копию своих системных корневых сертификатов, прежде чем вносить какие-либо изменения (или любую другую брешь, которую вы выберете):

cd /System/Library/Keychains/
sudo cp SystemRootCertificates.keychain SystemRootCertificates.keychain.old

Список всех ключей/всех сертификатов в цепочке ключей:

ls -l /System/Library/Keychains/
sudo security dump-keychain /System/Library/Keychains/SystemRootCertificates.keychain

При второй команде отображается каждый сертификат брелка. Определите сертификат, который хотите удалить. Затем удалите сертификат со следующей командой:

sudo security delete-certificate -Z <SHA-1 hash of certificate> /System/Library/Keychains/SystemRootCertificates.keychain
**alternative:**
sudo security delete-certificate -c <common name of certificate> /System/Library/Keychains/SystemRootCertificates.keychain

Это все. Теперь вы можете снова импортировать свой сертификат. В случае ошибки вы можете восстановить цепочку ключей с помощью следующей команды:

sudo security import certificate_files_backup -k /System/Library/Keychains/SystemRootCertificates.keychain -t cert