通过SST通过脚本安装证书,自动选择证书存储

时间:2018-07-26 12:43:34

标签: powershell certificate

我正在运行一个检测Windows更改的程序,它查找的更改之一是由于某个程序而添加的证书,问题是由于Windows Auth Root Updater而导致我不断看到误报。我的解决方案是使用

从Windows获取证书列表。
Certutil -generateSSTFromWU <filename>

并使用脚本进行安装。但是,一旦我尝试通过命令行从该文件安装证书,我看到的所有选项都要求我指定一个存储。在证书安装向导中,有一个根据证书类型自动选择证书存储的选项,如下所示

Certificate Install Wizard

有没有办法通过脚本来完成此任务?

感谢您的建议和帮助!

2 个答案:

答案 0 :(得分:0)

使用rootsupd.exe文件,我找到了一个行之有效的解决方案,从而摆脱了一些出现的证书条目。我提供了指向我找到可执行文件的链接。

https://support.kaspersky.com/13727

为了运行该文件,我以管理员身份打开PowerShell,导航到文件目录,然后执行命令

.\rootsupd.exe

使用我编写的脚本将证书转储到文本文件中,然后我就可以前后比较以确定是否添加了证书。

另一个要注意的是,使用命令解压缩rootsupd.exe程序包

rootsupd.exe /c /t:<filepath>

然后您可以在文件路径中找到一个名为updroots.exe的文件,该文件与此类sst文件一起使用时,

updroots.exe <sst file>

您可以安装sst文件。

但是,我仍然看到很多带有时间戳记的证书和代码签名证书,例如:

Microsoft时间戳PCA 2010
Microsoft代码签名PCA 2010
Microsoft时间戳PCA
GlobalSign盖章CA-G2
Microsoft代码签名PCA

如果任何人有任何建议以防止添加或抢先添加它们,那将非常有用。我试图禁用Windows Auth Root Update(Windows身份验证根更新),这不是一个方便的解决方案,因为如果程序可能需要证书,并且我希望看到该添加内容。尽管禁用了该服务,但我仍然看到这些带有时间戳记和带有代码戳记的证书。如果有人有任何建议,那将是很好的。

编辑:由于此问题已更改为其他主题,因此我将打开一个新问题。

新问题位于:
    Time-Stamp Certificates are Installed, What is Installing them?

答案 1 :(得分:0)

我认为rootsupd.exe实际上来自Microsoft。从我的记忆中可以看出,它只是使用MS最佳猜测方法来实际存储证书。我建议您使用PowerShell的Import-Certificate,因为您实际上可以指定要在哪个存储中使用。

对于带有时间戳记的证书CA,通常会在对程序包进行签名的证书的签名中看到它们。对于有效的软件包,您将需要能够验证签名和反签名的CA。