我已使用“安全”终端应用程序和命令将 iOS 开发的开发人员身份(证书+私钥)导入到钥匙串中
security import identity.p12 -k <keychain> -P <passphrase>
这会将 p12 文件中包含的两项(证书和私钥)导入到给定的钥匙串中。我忘了指定-T /usr/bin/codesign
但是,这会将协同设计应用程序添加到私钥的访问列表中。我尝试将协同设计应用程序添加到访问列表但无济于事:
- 我尝试使用添加的参数重新导入身份,但这似乎并没有改变私钥的访问列表。
- 我还尝试使用从钥匙串中删除证书
security delete-certificate
并重新导入。这不会更改私钥的访问列表。
由于我只能通过 ssh 访问计算机,因此无法使用钥匙串 GUI 应用程序。因此,我正在寻找一种从钥匙串中删除私钥的方法(以便之后我可以重新导入身份)。我已经检查了手册页security
工具但没有找到删除私钥的方法。
有什么方法可以仅使用终端命令从钥匙串中删除私钥(因为我只能通过 ssh 访问相关机器)?
您的系统上有几个钥匙串:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)