如何从Apple系统钥匙串中删除许多系统根目录?


14

Apple钥匙串应用程序不允许您删除系统根目录,而仅允许您禁用它们。它将仅允许您一次禁用它们。对于每个密码,您需要浏览3个UI面板并输入密码。有没有办法使它自动化或一次完成?我不喜欢Apple当前选择的系统根目录。


我无法给您答案/解决方案,但是我建议您重新考虑一下。您希望完成什么/您的目标是什么?这样做的好处是什么?这样做的缺点是什么?如果只是想清理钥匙串,我会忘记的。更改任何与“系统”有关的内容都会导致问题,通常不建议这样做。这是“如果没有破裂就不要修复”的情况之一。
— modelamac 2011年

5
我的目标是从我不信任的组织中删除受信任的根。我不信任中国政府。我不信任来自荷兰的受感染证书。我不信任来自其他组织的证书。我不要 我为什么要信任所有这些组织?我不。
— 2011年

3
我正在寻找/开发一个不信任的证书及其哈希值的好清单,这对于不信任它们非常有用。在我看来,不信任那些在专业领域之外很少见到的人是一个好主意。也许netcraft列出了通过调查得出的广泛使用的CA,以确定哪些被广泛使用。我敢打赌,大约有十二个CA,我将拥有前500个站点,而我经常访问的所有站点都将覆盖。vy32,我很好奇您是否有不信任的证书列表,以及为什么选择它们。可以分享吗?此外,
— MrE 2012年

您如何找出哪个证书属于哪个应用程序?
— 拉斯

证书不属于应用程序。它们属于系统。
— vy32

Answers:


13

在尝试任何操作之前,请备份钥匙串。

列出根证书:

sudo security dump-keychain /System/Library/Keychains/SystemRootCertificates.keychain

只需在转储中查找要删除的证书的名称或SHA-1哈希值,然后将其写下即可。

现在,您可以使用security delete-certificate命令删除该根证书。

用法:删除证书[-c名称] [-Z哈希] [-t] [钥匙串...]

-c  Specify certificate to delete by its common name
-Z  Specify certificate to delete by its SHA-1 hash value
-t  Also delete user trust settings for this certificate The certificate to be deleted must be uniquely specified either by a

以其通用名称或SHA-1哈希找到的字符串。如果未指定要搜索的钥匙串,则使用默认搜索列表。

例如,您可以使用以下命令删除中文根证书:

sudo security delete-certificate -Z 8BAF4C9B1DF02A92F7DA128EB91BACF498604B6F /System/Library/Keychains/SystemRootCertificates.keychain

3
将根证书列表转储到哪个属性下时,我会发现SHA-1哈希值吗?
— BrightIntelDusk

1
@BrightIntelDusk您可以使用以下命令:sudo security find-certificate -a -c startcom -Z /System/Library/Keychains/SystemRootCertificates.keychain
— lifeofguenter

1

谢谢!使用-c选项为我工作。在Keychain.app中找到根证书的名称,然后sudo security delete -c "CERTNAME" /System/Library/Keychains/SystemRootCertificates.keychain 如果在查看该证书的情况下使Keychain.app保持打开状态,则会注意到在终端中执行命令时该证书立即删除。


0

sudo security delete- certificate -Z 8250BED5A214433A66377CBC10EF83F669DA3A67 / System/Library/Keychains/SystemRootCertificates.keychain即使使用引用的证书,也无法通过散列删除证书而破坏了对根的信任:这始终会失败:“安全性:SecKeychainItemDelete:UNIX [不允许操作]”。

这是在DEFCON24上的演讲中的解决方法。

而是将根证书另存为cer文件并使用: security add-trusted-cert -d -r deny -k "/Library/Keychains/System.keychain" certname.cer


0
  1. 打开钥匙串访问应用程序(/ Applications / Utilities / Keychain Access.app)
  2. 在钥匙串中选择系统根
  3. 选择类别中的证书
  4. 搜索过期的证书名称
  5. 右键单击证书,然后选择“删除”
  6. 输入系统管理员密码

自从capitan以来,由于系统完整性保护,这不再起作用。但是,您可以选择不信任。
— Antzi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.