根据此页面上的信息,Windows 实际上信任的根 CA 证书比用户启动certmgr.msc
和导航到时显示的证书要多得多Trusted Root Certification Authorities > Certificates
。
根据文章,实际受信任的根 CA 证书不仅是向用户显示的证书,certmgr.msc
而且是本地计算机上由 Windows 维护的证书信任列表中的所有证书。
在我的 Windows 7 机器上,“CTLInfo.exe”工具(由该文章的作者提供)列出了 343 个根 CA 证书的输出。这绝对比我目前在我的用户帐户下的受信任的根证书颁发机构存储中拥有的 36 个要多得多。
其中一些如下所示。
进一步研究后,我按照以下步骤(取自上述文章中留下的评论)从 Windows 更新服务器生成带有受信任的根 CA 证书的 SST(Microsoft 序列化证书存储)文件:
- 启动 Windows 命令提示符并浏览到要在其中生成 SST 文件的某个文件夹。
- 执行:
certutil -generateSSTFromWU roots.sst
- 双击生成的
roots.sst
文件应该以certmgr.msc
. 或者,如果 .sst 扩展名配置为由您机器上的其他软件打开,您可以在同一命令提示符下执行以下命令:start explorer.exe roots.sst
我通过上述步骤获得的 SST 文件也有 343 个根 CA 证书,其中一些如下所示。
是否使用作者工具查看证书,或者是否使用第二种方法将它们生成到单独的列表中可能并不重要(但是,后一种选项为使用证书提供了更大的灵活性)。
更新 1:其中一个答案说,在本地计算机帐户下应该可以看到大量 300 左右的缺失证书。
所以我现在使用这些步骤来验证我机器上本地计算机帐户下的证书数量:
- 单击开始并输入
mmc
运行提示。这将带来一个空的Microsoft Management Console
. - 选择
Add/Remove Snap-In
从File
菜单。 - 在 中
Available snap-ins
,选择Certificates
并单击Add
。 - 选择
Computer Account
。 - 选择
Local Computer
。 - 单击
Finish
。
查看结果,本地计算机下显示的受信任根 CA 证书的数量是 37。今天这恰好与我的用户帐户下列出的数量完全相同,因为看起来 Windows 添加了一个受信任的根 CA 证书,因为我最初发布了这个问题。
事实上,本地计算机下列出的受信任的根 CA 证书似乎与我的用户帐户下列出的相同。但即使没有,这两组的总和也只有74人;343 个证书中的大多数仍然不可见。
最重要的是,尽管 343 个证书中的绝大多数也没有通过这种方式显示。
更新结束 1
无论如何,看看微软信任的 343 根 CA 证书,似乎它们中的大多数甚至不适用于我在美国。
或者,如果我需要与突尼斯或中国的某些服务器建立加密连接,它们可能适用。另一方面,如果我确实使用 IE 创建了到某些此类服务器的加密连接,浏览器可能不会抱怨太多,因为所需的根 CA 已经在我机器上的 CTL 中。
更新 2: 我认为将 SST 文件中的所有受信任的 CA 与本地计算机或当前用户下可见的证书分开会使明确禁止它们中的任何一个变得困难。例如,似乎 Google 计划停止接受的根 CA(在此处提到)仍然由 Microsoft 在上述步骤生成的 SST 中提供。
但是我注意到,仅在打开的 SST 文件中查看根 CA 证书就会立即将它们添加到Trusted Root Certification Authorities
certmgr 中可见的组中。所以刷新certmgr后,新的根CA就可以拖到Untrusted Certificates
组里了。
然而,这必须为每个查看的证书单独完成。
更新结束 2
所以我想问的问题是:
- 如果 Windows 可能愿意在将来使用它们(取决于我的 Web 浏览需要),为什么 Windows 不显示所有 343 根 CA 证书?
- Windows 不显示所有受信任的根 CA 证书这一事实是否存在任何潜在的安全问题
certmgr.msc
?