随着时间的推移,我在 Windows 信任库中安装了几个额外的受信任 CA 证书,有时是因为某个应用程序促使我这样做,有时是出于开发和测试的原因。
是否有任何命令可以恢复默认(或当前 MS 推荐的)受信任 CA 证书并删除任何其他条目?
随着时间的推移,我在 Windows 信任库中安装了几个额外的受信任 CA 证书,有时是因为某个应用程序促使我这样做,有时是出于开发和测试的原因。
是否有任何命令可以恢复默认(或当前 MS 推荐的)受信任 CA 证书并删除任何其他条目?
理论上,您可以应用以下方法:
删除所有根 CA 证书,Windows 本身绝对需要的证书除外,如此处所示。
从当前包安装当前受信任的根 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
.
笔记
u
参数中的 。归功于以下站点,http://woshub.com/how-to-check-trusted-root-certification-authorities-for-suspicious-certs/。
如果投票被破坏,请忽略投票,这是此处列出的唯一实际重置为默认值的解决方案。由于此处的 Rootsupd.exe 实用程序教程,我的受信任证书列表中有很多非法和不受信任的证书。没有恶意证书检测工具、防病毒或安全软件检测到它们。因此,我从我的 Windows 10 安装中删除了 300 多个受信任的根证书,只剩下 36 个没有任何问题。我这样做是因为每个证书,即使是合法证书,都会增加攻击面。
这对我来说比上面列出的任何其他方法都更有效,因为这里的 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