SmartScreen 阻止使用 SHA-2 签名的二进制文件

SmartScreen blocks binary signed with SHA-2

我用有效的 SHA-2 证书(Authenticode 和时间戳)对我的二进制文件进行了签名,但是 Windows 10 上的 SmartScreen 仍然阻止它并且 Edge 报告 "The signature of this file is corrupt or invalid".

我已经检查了来自流行来源(如 Firefox)的其他二进制文件。他们仍然使用 SHA1 时间戳证书签名,但是 Windows 没有报告任何问题。有人可以告诉我发生了什么事吗?

Link 到我的二进制文件: https://dl.dropboxusercontent.com/u/21463705/Whosebug/Win32Project1.exe

My certificate screenshot

我遇到了很多同样的问题,但还没有找到解决方案。我认为其他二进制文件使用 SHA1 签名的原因是因为它们是在 2016 年 1 月 1 日之前签名的。我们收到的关键服务公告指出:

Files signed previously with a SHA-1 certificate will continue to work on Windows 7 and above for an additional year as long as they were time-stamped before January 1, 2016.

此外,

Starting on Jan. 1, 2017, all SHA-1 signed files will be blocked on Windows 7 and above, regardless of when they were time-stamped.

我们的安装人员遇到了同样的问题。即使我只使用 SHA-2 证书进行 SHA-2 签名,Edge 仍然报告签名无效。

我们使用相同的代码签名权限,"VeriSign Class 3 Code Signing 2010 CA",它本身是使用 SHA-1 签名签名的:

这似乎是 SmartScreen 的 "The signature of this file is corrupt or invalid" 错误消息的原因。

我联系了 Symantec(他们现在 运行 VeriSign),他们为我们颁发了替换证书。与前一个不同的是,这个由 "Symantec Class 3 SHA256 Code Signing CA" 签名并且用 in 签名的可执行文件不再触发 SmartScreen 中的 "signature corrupt or invalid" 错误。

我仍然收到警告,因为我们的安装程序还没有足够的信誉,但这是一个完全不同的问题。

更新:赛门铁克现在 discontinuing the use of SHA-1 Intermediate CA Certificates used for signing SHA-256 Code Signing certificates