我创建了一个从Visual Studio安装项目生成的Setup.exe文件。我有一个代码签名证书,我公司从Digicert购买,我们已经用于其他产品,所以它应该是好的。我已经设置了一个post-build事件来签署我的应用程序,并使用signtool.exe对生成的.msi和setup.exe进行签名,因此所有内容都应该成功签名。如果我运行任何类型的签名验证,或查看文件属性,它会显示我的数字证书。
如果我在IIS(8.5)中托管此Setup.exe文件,允许目录浏览,并设置我的MIME类型以允许下载文件,我可以从浏览器将此Setup.exe文件下载到我的计算机。如果我运行它,那么我得到一个Windows SmartScreen过滤器,说它是一个无法识别的应用程序。根据它,它说出版商是未知的。如果没有通过IIS下载相同的setup.exe文件,并且例如说从一台计算机复制到另一台计算机并执行,则没有Windows SmartScreen筛选器。因此,似乎这个问题是由IIS下载引起的。有没有办法解决这个问题?
答案 0 :(得分:1)
我发现了问题所在。根据这篇文章: http://social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-authenticode-code-signing-and-timestamping.aspx
它解释说,从2016年1月1日开始MS将不再信任使用SHA-1代码签名证书签名的新代码,这正是我所使用的。我切换到新的证书,问题得到了解决。