在Windows 10的“Fast Ring”上,我在自己的安装可执行文件中遇到了一个奇怪的行为:
我是SHA-1用Authenticode与a 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"
(为了便于阅读,添加了换行符)
我的问题:
是否有人知道可能的原因(并修复)?
更多信息:
我可以想到可能的原因:
更新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上的“”。
这似乎正朝着正确的方向发展。
我看到我目前的证书是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证书加上等待获得足够的声誉仍然没有帮助,我可能不得不吞下苦药并购买(这需要硬件令牌并且更贵)。
更新5:
约。有一天,SmartScreen似乎 not 不再显示任何警告。
似乎我现在的双重签名安装可执行文件(SHA-1和SHA-256)已经获得了足够的声誉,无法成功通过SmartScreen测试。
我的认证路径/链现在看起来像这样:
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证书的费用。
答案 0 :(得分:2)
作为user GSerg pointed out,我在初始问题中出错的原因是我只使用了SHA-1,这是" deprecated"自2016年起由Microsoft提供。
使用SHA-1和SHA-256对设置可执行文件进行双重签名(并等待几天)后,SmartScreen筛选器不再抱怨。