macos - 使用终端从 Mac OS X 钥匙串(keychain)中删除私钥

标签 macos terminal keychain codesign

我已使用“安全”终端应用程序和命令将 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/

相关文章:

xcode - 集成机器人存储在哪里?

java - 如何将字符串发送到终端而不是标准命令?

ios - 在 KeyChain Access 中存储加密/解密 key 的可靠性?

ios - 如何从存储在 iOS 钥匙串(keychain)中的 key 获取 DER 格式的公钥?

Xcode 4.4.1 验证 Mac 应用程序时出错 : CFBundleExecutable of two bundles may not point to the same file

python - 以编程方式与 OS X 或 Linux 中的串行端口通信

linux - 用于分析结果的基于文本的查看器

linux - 自动运行终端命令的汇编代码

php - 使用 PHP 以编程方式访问钥匙串(keychain)中的 iOS 证书

cocoa - Mac 上的 OpenGL 操作