安装签名应用程序时如何在Win8上通过智能屏幕?

时间:2012-09-07 03:09:11

标签: c# windows-installer

我们是开发人员,我们有一个数字签名的应用程序安装程序。当我们安装此应用程序时,它会弹出影响安装体验的智能屏幕。它说

  

Windows保护您的电脑

     

Windows SmartScreen阻止无法识别的应用启动,   运行此应用程序可能会使您的PC面临风险。

我认为除了数字签名之外,微软还有一些策略来验证应用程序。有没有人有这个问题的经验,请给我一些线索来解决这个问题?

9 个答案:

答案 0 :(得分:47)

如果您使用从CA购买的证书对安装程序进行了签名,则应与CA联系,以了解他们未能与Microsoft合作以解除此警告的原因。

如果证书不是来自CA,而是来自自签名证书,则您必须求助于CA.

微软已经在其Windows团队博客上发布了大部分信息,

https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/

  

最佳做法

     

开发人员仍应遵循我们在过去的博文中提出的最佳做法。我们在该指南中添加了通过Windows应用商店分发应用程序和EV代码签名选项的其他选项:

     
      
  • 通过Windows应用商店分发您的应用
  •   

Windows 8应用程序需要通过Windows应用商店开发人员入职和应用程序审核流程。 Windows 8应用程序不在Windows 8中的SmartScreen应用程序信誉检查或警告范围内。

  
      
  • 对您的程序进行数字签名(标准或EV代码签名)
  •   

生成信誉并将其分配给数字证书以及特定文件。数字证书允许聚合数据并将其分配给单个证书,而不是许多单独的程序。虽然不是必需的,但EV代码签名证书签署的程序可以立即建立SmartScreen信誉服务的声誉,即使该文件或发布者不存在先前的声誉。 EV代码签名证书还具有唯一标识符,可以更轻松地维护证书续订的信誉。只有作为Windows根证书计划成员的CA颁发的Authenticode证书才能建立声誉。

目前,赛门铁克和DigiCert正在提供EV代码签名证书。

  
      
  • 不签名或分发恶意代码
  •   

分发检测为恶意的代码将删除文件中的信誉以及相关数字证书中的任何信誉 - 即使使用EV代码签名证书签名也是如此。

  
      
  • 申请Windows徽标或Windows 8桌面应用程序认证
  •   

在此处详细了解这些计划: Windows 8桌面应用程序认证(Windows应用商店提交所需) Windows徽标计划

答案 1 :(得分:46)

我们刚刚完成了从 Authenticode证书转移到证书的整个过程(不是EV证书,只是可以在我们的自动构建过程。)

Microsoft不再提供任何将现有证书的声誉转换为新证书的方法。所以不要试着打电话给他们的支持。你只会浪费大量的时间和精力。他们无法提供帮助。

Microsoft声称,如果旧证书和新证书具有相同的文本内容,则可以更快地建立声誉。更具体地说,这是我从SmartScreen®过滤器的应用程序信誉功能支持团队得到的回复:

  

请注意,每当您续订具有已知声誉的证书时,您可能会在初次下载使用续订证书签名的文件时看到一些警告。但是,更新证书上的已知声誉通常比新证书上的建立更快。更新的证书可以建立声誉,但用户仍然可以单击以运行或保存下载。为此,他们选择Actions |更多选项|无论如何从下载管理器运行。

确保SmartScreen不会警告用户的最佳方法是运行Windows SDK下载中应包含的 Windows应用认证工具包(WACK)

Windows App Certification Kit

运行测试后,WACK解释了如何继续:

Final Report - Validation passed

将成功的应用程序认证的XML结果上传到https://sysdev.microsoft.com。几天后,SmartScreen将了解用于认证程序的数字签名,并且不再警告用户下载。

注意我们无法在Windows 8.1的最新更新上验证我们的应用程序,我们必须使用Windows 8.1的全新安装才能让WACK成功验证我们的所有程序。

答案 2 :(得分:15)

我一直在寻找,所以我将分享到目前为止我发现的内容。

我在微软的Windows 8中没有找到任何关于此功能的文档,但我可能只是在错误的地方找。

我读过的大多数文章都讨论了SmartScreen Filter的工作原理如下:

  • 在运行已下载的安装程序或可执行文件之前,Windows 8会咨询数据库。
  • 数据库可以报告该程序是否已经:
    • 报告为恶意/网络钓鱼,(并由Microsoft员工验证)。
    • 许多人使用/经营。

如果有足够多的人运行该安装程序,而不将其报告为恶意,最终该程序将被标记为安全,而其他用户将不会收到恼人的消息。

一些消息来源:(here)(here

用户安装程序时发送给Microsoft的信息包括IP地址,安装程序的哈希值和数字签名,以及可能的应用程序文件名。 (see here

Microsoft员工可以直接访问数据库,以添加和标记所有Microsoft应用程序的安全性。

也许Microsoft已经设置了一种方法来预先验证安装程序,如果不是,您可能只需要等到有足够多的人运行安装程序。 (但不确定会有多少)。

答案 3 :(得分:11)

我刚刚完成了这个过程,我将为此添加一些信息。

1)获得EV。这很值得。下次升级证书时,请升级到EV证书。每年的价格大约是100美元。 EV证书被认为更安全,因为它们更难窃取。发给您时,将向您发出硬件令牌设备以完成签名。不幸的是,最终标志与自动构建不兼容。

它并不像听起来那么糟糕。它们将为您提供第二个证书,用于签署与自动化兼容的可执行文件(在安装程序内)。安装程序上的签名必须与硬件令牌一起签名。

2)如果您不想获得EV证书,则需要声誉。如果您正在升级,Microsoft将从您的旧证书转移到您的新证书。您必须联系MSDN技术支持,大约一周后就可以完成。我提交了我的新旧安装程序 - 使用新旧证书 - 并修复了它。

3)如果这是您的第一张证书,那么在您获得声誉之前,您一直坚持使用SmartScreen。您可能应该通过sysdev.microsoft.com获得您的应用程序认证。但是,在您获得微软的良好声誉之前,您并不知道需要多少下载。

这是我的经历。

答案 4 :(得分:5)

由于Windows 8.1已经用完。

  • 当您通过互联网将所有标准代码签名证书下载到PC并尝试安装时,Microsoft会停用所有标准代码签名证书,但如果您通过USB或CD-ROM分发应用程序,则可以使用标准代码签名证书应用程序。

  • 请勿使用signtool.exe进行验证(signtool.exe verify /pa mysetup.exe会显示成功,但当其他用户下载并尝试安装SmartScreen弹出窗口时,它会失败)

使用Windows应用认证工具包(WACK)

enter image description here

  • 此标准代码签名证书已失效。意味着如果您拥有标准代码签名证书,即使Windows应用程序认证工具包(WACK)显示PASS with WARNING,它也不会像过去那样可靠地工作,并不意味着它100%验证成功

enter image description here

您必须购买EV证书(https://www.globalsign.com/en/code-signing/

所以,要取得100%的成功,请遵循勺子饲料:

第1步:转到https://sysdev.microsoft.com并登录

a)创建公司帐户>下

b)下载winqual提供的zip文件的winqual.exe文件,现在使用您的标准证书或EV证书签署winqual.exe,然后单击“下一步”上传文件进行验证。

在我的情况下,它失败了,因为我有标准证书,微软停止允许。因此,你现在所要​​做的就是购买EV牌照,否则你就搞砸了,并且可以用你的一生解决这个问题而不用任何线索。

enter image description here

答案 5 :(得分:4)

我已经测试了EV证书解决方案,它确实有效。

可悲的是,我还要提到EV证书与TeamBuild不兼容,后者在服务的上下文中执行签名。 EV证书需要与SafeNet,Inc提供的加密服务提供商连接的硬件令牌,以便与所有授权的EV证书供应商(VeriSign和DigiCert)一起使用。

签名时,来自Safenet的驱动程序将提示输入密码,该密码与在服务上下文中执行有些不兼容。此外,Safenet提供的保护可以防止除了实际控制台以外的任何其他内容您甚至无法在远程桌面会话中进行签名。因此,从Teambuild内部签名充其量是有问题的,在最坏的情况下是不可能的。

我曾与Microsoft合作,他们无法提供签名的解决方法或在SmartScreen下实现即时声誉的任何其他方式。

答案 6 :(得分:1)

不幸的是,我没有足够的代表来简单评论上述答案之一。但是,如果您为已发布的应用程序指定了部分信任(我选择了Internet区域)并且具有代码签名证书,则不会显示智能屏幕警告(在Win10上检查)。

答案 7 :(得分:1)

我使用令牌(GlobalSign)上的EV证书以自动方式签署我的申请。使用.bat文件。在“.bat”文件中,键入ex :(对于sha1)

SignTool.exe sign /n "Exact Enterprise name in the cert - token" /t "http://timestamp.globalsign.com/scripts/timstamp.dll" "c:\Patch_to_file\Filename.exe"

证书中的“确切企业名称 - 令牌”应该是证书中的确切名称(令牌)

答案 8 :(得分:0)

“该文件的版本与您正在运行的Windows版本不兼容”。在Windows 2008服务器下,无论如何都没有“更多信息”按钮可供选择安装。

当我们使用非Microsoft产品(Delphi)开发Windows桌面软件(不是'Apps'),并使用Innosetup作为我们的安装程序时,应用程序验证毫无意义。它在那里停留30分钟什么都不做,我们只需启动应用程序,然后手动关闭应用程序,然后生成通行证报告。

我们对所有版本及其中的每个可执行文件进行编码。

当我们将XML上传到Microsoft时,经过认证的XML位于与我们的主开发者帐户无关的站点上,无法将其发布到Microsoft Store。每次申请浪费45分钟。

相关问题