如何将 Windows 受信任的证书存储重置为其默认值

信息安全 证书 公钥基础设施
2021-08-17 11:32:24

随着时间的推移,我在 Windows 信任库中安装了几个额外的受信任 CA 证书,有时是因为某个应用程序促使我这样做,有时是出于开发和测试的原因。

是否有任何命令可以恢复默认(或当前 MS 推荐的)受信任 CA 证书并删除任何其他条目?

3个回答

理论上,您可以应用以下方法:

  1. 删除所有根 CA 证书,Windows 本身绝对需要的证书除外,如此处所示

  2. 从当前包安装当前受信任的根 CA 列表请注意,此包的验证要求您仍然信任其中一个“必要的”根 CA,这就是您必须在第一步中保留它们的原因。

我强调我没有测试过这种方法作为准备步骤,您可能需要首先备份所有这些证书:运行certmgr.msc,打开Root存储,全部选择它们(例如使用 Ctrl-A),然后右键单击并选择将它们全部导出为 PKCS#7文件。该文件将包含所有证书的副本,如果上述方法以某种方式失败,它应该允许您修复事物。再一次,恢复是未经测试的。

小心商店的多样性。certmgr.msc显示包含来自各种来源(“实体店”)的证书的聚合视图。要了解您将要执行的操作,请在证书管理器中右键单击证书节点(左窗格中树的根节点),选择查看,然后选择选项,然后选择物理证书存储框。此博客条目中描述了此过程(带有屏幕截图)。

我找到了以下简单的方法来删除官方和当前 Microsoft 证书信任列表中不存在的本地受信任的 CA 证书:

首先下载 Sigcheck ( https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck ) 然后执行:

>sigcheck.exe -tuv
... 
Listing valid certificates not rooted to the Microsoft Certificate Trust List:

User\Root:
   Test Purpose CA
        Cert Status:    Valid
        Valid Usage:    All
        Cert Issuer:    Some development Root CA
        Serial Number:  01
        Thumbprint:     9CB31B0AE15867B5E29C4F7E21FE195C2AF24FE3
        Algorithm:      sha1RSA
        Valid from:     2:10 PM 2/5/2015
        Valid to:       2:10 PM 2/5/2025
   LLAMA.PE Root CA - R2
        Cert Status:    Valid
        Valid Usage:    All
        Cert Issuer:    Some third party Root CA
        Serial Number:  01 E0 DA 86 CC 7D 58 ED D8 62 E6 47 A2
        Thumbprint:     1B4AEFF4FB8E2BEFEB3A8FE60D03D24269AB4A6B
        Algorithm:      sha256RSA
        Valid from:     7:00 PM 3/14/2017
        Valid to:       7:00 PM 3/14/2037
...

然后只需删除所有显示的 CA,例如certmgr.msc.

笔记

  • 此方法仅有助于删除 Microsoft 证书信任列表中不存在的本地受信任 CA 证书,但不会安装当前未安装在本地存储中的 Microsoft 证书信任列表 CA(例如手动删除的 CA)。
  • 这将检查当前用户存储,而不是机器存储。要检查机器存储,只需省略u参数中的 。
  • 输出似乎只包含有效证书,例如,我观察到没有列出具有 Windows 无法验证的签名的本地受信任 CA,我不得不检查它并手动将其删除。

归功于以下站点,http://woshub.com/how-to-check-trusted-root-certification-authorities-for-suspicious-certs/

  1. 创建一个VirtualBox VM 或下载 microsoft 的预制 VM(预制 VM 将包含一些额外的代码签名和 Visual Studio 证书)
  2. 在此处安装 Windows 10是使用官方 Windows 10 媒体创建工具的包装器,但它将包括企业版本和预激活 ISO 的序列号
  3. 加载 mmc.msc
  4. 添加证书管理单元
  5. 选择“电脑”
  6. 注意列出的证书
  7. 导出您缺少的内容并将它们复制到您的主 PC
  8. 备份并删除您在 Windows 10 VM 中看不到的主 PC 上的每个证书。
  9. 将 VM 证书导入主 Windows 系统。

如果投票被破坏,请忽略投票,这是此处列出的唯一实际重置为默认值的解决方案。由于此处的 Rootsupd.exe 实用程序教程,我的受信任证书列表中有很多非法和不受信任的证书没有恶意证书检测工具、防病毒或安全软件检测到它们。因此,我从我的 Windows 10 安装中删除了 300 多个受信任的根证书,只剩下 36 个没有任何问题。我这样做是因为每个证书,即使是合法证书,都会增加攻击面。

  1. 创建一个VirtualBox VM 或下载 microsoft 的预制 VM(预制 VM 将包含一些额外的代码签名和 Visual Studio 证书)
  2. 在此处安装 Windows 10是使用官方 Windows 10 媒体创建工具的包装器,但它将包括企业版本和预激活 ISO 的序列号
  3. 加载 mmc.msc
  4. 添加证书管理单元
  5. 选择“电脑”
  6. 注意列出的证书
  7. 导出您缺少的内容并将它们复制到您的主 PC
  8. 备份并删除您在 Windows 10 VM 中看不到的主 PC 上的每个证书。
  9. 将 VM 证书导入主 Windows 系统。

这对我来说比上面列出的任何其他方法都更有效,因为这里的 Rootsupd.exe 实用程序教程在我的受信任证书列表中有很多非法和不受信任的证书没有恶意证书检测工具、防病毒或安全软件检测到它们。因此,我从我的 Windows 10 安装中删除了 300 多个受信任的根证书,只剩下 36 个没有任何问题。我这样做是因为每个证书,即使是合法证书,都会增加攻击面。

导入整个列表不会重置为默认值,并且存在潜在的安全隐患,但是如果您想要导入 400 个证书的整个列表,您可以从 Windows Update 下载该列表:

cd C:\ps\rootsupd\然后在 Powershell/CMD 中运行certutil.exe -generateSSTFromWU roots.sst

然后在 Powershell 中:

$sstStore = ( Get-ChildItem -Path C:\ps\rootsupd\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root

或者

仅使用 powershell 从 Windows 更新导入证书:

cd c:\certs\
certutil.exe -generateSSTFromWU roots.sst
$sst = ( Get-ChildItem -Path C:\certs\roots.sst )
$sst = ( Get-ChildItem roots.sst )
$sst| Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root