【问题标题】:Any downsides to overwriting certificate signatures of dependency files already signed by Microsoft?覆盖已由 Microsoft 签名的依赖文件的证书签名有什么缺点吗?
【发布时间】:2022-03-18 18:19:06
【问题描述】:
我正在将 EV 代码签名添加到我的 .NET 程序的构建过程中,但我遇到了两难境地。我最初想在我的发布目录中签署所有.exe 和.dll 文件,但我现在意识到许多依赖.dll 文件已经由微软签署。
可以用我自己的覆盖证书签名,有效地删除微软的签名吗?我担心这可能会触发 Windows Defender 的额外误报检测,因为它可能最信任由自己的证书签名的文件。
如果我想避免覆盖它,我必须让我的构建过程不那么健壮,并手动将整个路径设置为我想要签名的文件,如果覆盖没有缺点,我想避免这种情况。谢谢。
【问题讨论】:
标签:
code-signing
code-signing-certificate
signtool
【解决方案1】:
您可以检查文件是否已经签名,并且只对未签名的文件进行签名。
我使用 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,因为 powershell.exe 的启动可能非常重要(100 个文件的 100-200 毫秒加起来)