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

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

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

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

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

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

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

26
задан Erik 12 October 2011 в 15:52
поделиться

1 ответ

В вашей системе есть несколько цепочек для ключей:

sudo security list-keychains
"/Users/JonDoe/Library/Keychains/login.keychain"
"/Library/Keychains/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
33
ответ дан 28 November 2019 в 07:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: