组策略设置“关闭自动根证书更新”可防止 Windows 删除无法验证的证书。
如果第三方向我提供了他们自己的自签名根证书,我除了关闭自动根证书更新之外别无选择,否则他们的自签名证书将由于组策略规则在某个时候被删除。
禁用此检查是否不安全?
我还有其他选择吗?我可以设置更细粒度的规则,以便 Windows 不会删除特定证书,但会继续更新我已安装的其他证书吗?
笔记:
我正在使用基本的 c# 应用程序来部署证书,使用以下代码:
X509Certificate2 certificate = new X509Certificate2("trusted-root-cert.cer");
X509Store store = new X509Store(StoreName.AuthRoot, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();
我需要通过代码安装证书,因为我的软件作为多台机器组成的场的一部分运行,手动安装任何东西都不切实际。
此外,这些机器位于工作组中,而不是域中。
答案1
据我所知,证书通过组策略部署在自动根证书更新运行时不会被删除。
我找不到来自 MSFT 的明确参考。这就是我在客户环境中部署私有 CA 根证书的方式,而且我没有遇到它们被自动删除的问题。(当然,既然我这么说了……>叹息<)
答案2
有两种方法可以将自定义根证书分发给域成员:
- 通过以下方式分发组策略(已经提到)
当只有特定域成员应安装此证书(因为 GPO 支持定位)或存在特定自定义属性时,应使用此选项。
- 将其发布到 Active Directory。
此方法用于将根 CA 证书发布到所有 AD 林成员(而 GPO 方法只能在特定域/站点内使用)。此外,此方法支持命令行(与 GPO 方法不同):
certutil -dspublish <path\certfilename.crt> RootCA
其中<path\certfilename.crt>
是证书文件的路径。客户端将在下一次自动注册触发时从 AD 下载此证书。