Удалите секретный ключ из брелка для ключей 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-доступ к рассматриваемой машине)?
Ответы
Ответ 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