如何从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.