覆盖Microsoft已经签名的依赖文件的证书签名有什么缺点吗



我正在将EV代码签名添加到.NET程序的构建过程中,我陷入了困境。我最初想对发布目录中的所有.exe.dll文件进行签名,但现在我意识到许多依赖的.dll文件已经由Microsoft进行了签名。

可以用我自己的证书签名覆盖证书签名,从而有效地删除Microsoft的签名吗?我担心这可能会引发Windows Defender的额外误报检测,因为它可能最信任由自己的证书签名的文件。

如果我想避免覆盖它,我必须降低我的构建过程的健壮性,并手动将整个路径仅设置为我想要签名的文件,如果覆盖没有负面影响,我希望避免这种情况。谢谢

您可以检查文件是否已签名,并且只对未签名的文件进行签名。

我使用powershell的Get-AuthenticodeSignature,因为我的自动化是通过PoSh完成的。然后很容易做到:

...
$sig = Get-AuthenticodeSignature $filename
if ($sig.Status -eq 'NotSigned') {
... add file path to list of files to sign
}

不相关的附带说明:如果您的构建不是通过powershell运行的,例如,如果您在VS PostStep中运行此构建,请确保您不会为要检查的每个文件调用新的powershell.exe,因为powershellexe的启动可能非常重要(100个文件的100-200ms加起来(

最新更新