我已使用“安全”终端应用程序和命令将 iOS 开发的开发人员身份(证书 + 私钥)导入到钥匙串(keychain)
security import identity.p12 -k <keychain> -P <passphrase>
这会将 p12 文件中包含的两项(证书和私钥)导入到给定的钥匙串(keychain)中。我忘记指定-T /usr/bin/codesign
但是,这会将协同设计应用程序添加到私钥的访问列表中。我尝试将协同设计应用程序添加到访问列表但无济于事:
- 我尝试使用添加的参数重新导入身份,但这似乎不会更改私钥的访问列表。
- 我还尝试使用
security delete-certificate
从钥匙串(keychain)中删除证书并重新导入。这不会更改私钥的访问列表。
由于我只能通过 ssh 访问计算机,因此无法使用钥匙串(keychain) GUI 应用程序。因此,我正在寻找一种从钥匙串(keychain)中删除私钥的方法(以便之后我可以重新导入身份)。我检查了 security
的手册页工具,但没有找到删除私钥的方法。
有什么方法可以仅使用终端命令从钥匙串(keychain)中删除私钥(因为我只能通过 ssh 访问相关计算机)?
最佳答案
您的系统上有多个钥匙串(keychain):
sudo security list-keychains
"/Users/JonDoe/Library/Keychains/login.keychain"
"/Library/Keychains/System.keychain"
我认为您将其导入到系统钥匙串(keychain)中: 在进行任何更改(或您选择的任何其他钥匙串(keychain))之前,首先备份您的系统根证书:
cd /System/Library/Keychains/
sudo cp SystemRootCertificates.keychain SystemRootCertificates.keychain.old
列出钥匙串(keychain)中的所有钥匙串(keychain)/所有证书:
ls -l /System/Library/Keychains/
sudo security dump-keychain /System/Library/Keychains/SystemRootCertificates.keychain
使用第二个命令会显示钥匙串(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
仅此而已。现在您可以再次导入您的证书。如果出现错误,您可以使用以下命令恢复您的钥匙串(keychain):
sudo security import certificate_files_backup -k /System/Library/Keychains/SystemRootCertificates.keychain -t cert
关于macos - 使用终端从 Mac OS X 钥匙串(keychain)中删除私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678057/