Windows 认为签名安装程序在安全更新后是恶意软件 (KB3124605)

Windows thinks signed installer is malware after security update (KB3124605)

2 年前@Dejan Maksimovic 问了一个关于 Internet Explorer shows valid certificate as “corrupt or invalid signature” 的问题。 到目前为止,我遇到了一个需要提升权限的安装程序的类似问题。

这个问题似乎是同源的,但是 KB3124605

安装程序使用 signtool 签名,证书有效期至 2016 年 8 月。

当我安装包含此补丁的累积更新时 Windows SmartScreen 告诉我发布者未知,但是当我卸载安全更新时,Windows 似乎能够区分发布者(证书信息中实际提到的那个。

更新于 1 月 12 日发布。有同样问题的人吗?

运行 SignTool verify /pa <My Installer.exe> returns Successfully verified: <My Installer.exe>

在最终收到新的代码签名证书后,我可以使用 SHA256 签名为我的安装程序签名。

不过我不得不将 /fd sha256 添加到 signtool

SignTool.exe sign \
  /f "$CERTIFICATE" \
  /p $PFX_PASSWORD \
  /fd sha256 \
  /t http://timestamp.verisign.com/scripts/timestamp.dll" \
  /d "Name" \
  /du "http://my.website.com/" \
  "<My installer>"

不幸的是,我仍然遇到 Smartscreen 警告(但显然这是 windows 8+ feature)。好消息是出版商不再默默无闻了。

仍在尝试 windows application verifier for windows 8, 8.1 and server 2012 (windows 10 here) from this post

编辑:(参见@Bogdan 的评论)

对于双重签名,请执行以下步骤(不适用于 msi,仅适用于 exe

SignTool.exe sign /f "$CERTIFICATE" /p $PFX_PASSWORD /t http://timestamp.verisign.com/scripts/timestamp.dll" /d "Name" /du "http://my.website.com/" /v "<My installer>.exe"
SignTool.exe sign /f "$CERTIFICATE" /p $PFX_PASSWORD /fd sha256 /tr http://timestamp.verisign.com/scripts/timestamp.dll" /d "Name" /du "http://my.website.com/" /as /v "<My installer>.exe"

SHA2 签名无法被早于 Windows 7 的操作系统识别,因此如果您也以这些为目标并希望您的签名在那里可见,您需要执行 dual signing.

Microsoft 解释 steps for dual signing,提供更多详细信息。