Windows 10忽略我的设置文件

时间:2016-01-24 18:09:43

标签: windows windows-10 sha authenticode

在Windows 10的“Fast Ring”上,我在自己的安装可执行文件中遇到了一个奇怪的行为:

我是SHA-1用Authenticodea MSDN blog article back from 2013 that seems to talk about something similar签约,因为多年以同样的方式,从来没有遇到任何问题。

最近,Windows 10无法识别我的(有效)签名。

从我的网站下载setup.exe并执行它时,会出现Windows SmartScreen消息框并告诉我:

  

...
  出版社:未知
  ...

查看刚下载的安装程序可执行文件的属性时,会显示签名,并告诉我签名有效。

此外,整个证书链有效。

我用这样的东西签名:

SignTool.exe sign /v /t http://timestamp.verisign.com/scripts/timstamp.dll 
    /f "my-authenticode.pfx" /p "my-password" "my-setup.exe"

(为了便于阅读,添加了换行符)

我的问题:

是否有人知道可能的原因(并修复)?

更多信息

我可以想到可能的原因:

  • 使用Windows 10快速响铃签名是错误的。 (我已经在Windows Server 2008 R2上签了相同的行为)。
  • 在Windows 10 Fast Ring中运行下载的安装程序可执行文件是错误的。

更新1:

我发现there is also a similar SO posting,但我仍然无法确定这是否真的适用。

更奇怪的是:我们网站上的较旧下载,使用相同的Authenticode证书签名,会触发警告。

也许SmartScreen会比较时间戳,并且对于较新的签名/设置可执行文件的行为会有所不同?

也许我需要在调用SignTool.exe时添加其他/不同的参数?

更新2:

在非快速响铃Windows 10上,SmartScreen警告显示。

此外,there is a Symantec posting, that claims对我没有帮助。

另外,link to their own instructions

  

对于Windows Vista 64位和Windows 7,签名过程已更改。代码不能简单地签名,它还需要与Microsoft提供的证书“交叉签名”。

这对我来说很奇怪,因为我的签名程序直到最近成功运作。

他们进一步GSerg pointed只讨论内核模式软件。

更新3:

用户Windows Enforcement of Authenticode Code Signing and Timestamping转到Microsoft TechNet上的“enter image description here”。

这似乎正朝着正确的方向发展。

我看到我目前的证书是SHA-1。我刚刚从Thawte重新发布它,将它更新为SHA-2 / SHA-256。

现在,我仍然在我的本地Windows 10 Fast Ring PC上收到SmartScreen警告,但至少它现在打印出版商。

code signing cert from DigiCert

我不会购买was a problem with SHA-256 signed files,因为我相信证书链也会影响SmartScreen过滤器查看我的应用程序的方式。我希望与我目前使用的Thawte证书相比,这是一项改进。

如果您打算签署Windows Vista,请注意dual signing。链接的TechNet文章讨论了this SO answer以克服这个问题。

更新4:

另请参阅extended validation (EV) code signing certificate,了解如何通过已签名的应用程序传递SmartScreen警告。

如果这个DigiCert证书加上等待获得足够的声誉仍然没有帮助,我可能不得不吞下苦药并购买enter image description here(这需要硬件令牌并且更贵)。

更新5:

约。有一天,SmartScreen似乎 not 不再显示任何警告。

似乎我现在的双重签名安装可执行文件(SHA-1和SHA-256)已经获得了足够的声誉,无法成功通过SmartScreen测试。

enter image description here

我的认证路径/链现在看起来像这样:

Do You Need SHA-2 Signed Root Certificates?

对我来说有点奇怪的是,根证书“thawte”仍然使用SHA-1。

我原本预计这会引起SmartScreen的担忧,但似乎没有。

更新6:

文章“{{3}}”解释了为什么需要SHA-256根证书。

与此同时,我还收到了DigiCert的Authenticode证书。我已经在一些设置中使用它了。

只需要一天的时间,直到SmartScreen过滤器确实接了它并且警告它了。

所以我现在有一个Thawte Authenticode代码签名证书和一个DigiCert Authenticode代码签名证书。

如果我之前了解SHA-256的含义,我本可以节省DigiCert证书的费用。

1 个答案:

答案 0 :(得分:2)

作为user GSerg pointed out,我在初始问题中出错的原因是我只使用了SHA-1,这是" deprecated"自2016年起由Microsoft提供。

使用SHA-1和SHA-256对设置可执行文件进行双重签名(并等待几天)后,SmartScreen筛选器不再抱怨。