我有一个自签名的 .cer 证书,需要将其部署到大约 1000 台机器上,运行从 Windows XP 和 Server 2003 到 Windows 7 和 Server 2008 R2 的各种 Windows 版本。
SCCM 是我们正常的部署方法,并且尝试了几种不同的方式部署这些方法,并且遇到了这样的事实:不是所有操作系统上都有所有必需的工具,就是我在自动部署时收到错误消息,而手动运行它们时却看不到。
我发现最适合跨平台的方法是从安装了管理工具的 XP SP3 副本中获取 CertUtil.exe 和 certadm.dll 的副本,并将其放在与 .cer 文件相同的文件夹中,然后在批处理文件中使用以下命令行:
certutil.exe -addstore TrustedPublisher cert.cer
certutil.exe -addstore root cert.cer
手动运行批处理文件时效果很好,但自动运行时会出现各种错误。
有没有更好的方法来实现跨 Windows 平台的这一功能?
答案1
由于您有这么多台机器,因此可以合理地假设您使用的是 AD 域,在这种情况下,您可以使用组策略对象推送证书。有许多文章描述了这些步骤,例如这个来自 Technet。
答案2
根据之前的问题线索在 Win XP Home 中使用命令行导入证书,经过一番尝试,现在已经可以在各个操作系统上一致地部署它了。
已从 32 位 Win Server 2003 SP2 管理包中提取以下文件 (KB340178) 并与证书一起保存在 SCCM 中的包源文件夹中:
certadm.dll
certcli.dll
certreq.exe
certutil.exe
cert.cer
现在放弃批处理文件并在 SCCM 中使用以下两个命令行创建两个单独的程序(都链接到一个广告中),这一切似乎都可以作为操作系统的自动推出。
certutil.exe -addstore TrustedPublisher cert.cer
certutil.exe -addstore root cert.cer