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

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

Windows 保护了你的电脑

WindowsSmartScreen 阻止一个无法识别的应用程序启动, 运行这个应用程序可能会让你的电脑处于危险之中。

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

63671 次浏览

如果您使用从 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 商店分发应用程序

Windows8应用程序需要通过 WindowsStore 开发人员入职和应用程序审查过程。在 Windows8中,Windows8应用程序不在 SmartScreen 应用程序声誉检查或警告范围内。

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

声誉产生并分配给数字证书以及特定的文件。数字证书允许将数据聚合并分配给单个证书,而不是许多单独的程序。虽然不是必需的,但是由 EV 代码签名证书签名的程序可以立即在 SmartScreen 声誉服务中建立声誉,即使该文件或发布者之前不存在声誉。此外,电动车代号签署证书亦设有唯一标识符,让续领证书时更容易维持声誉。只有属于视窗根证书程式成员的核证机关所签发的验证码证书,才可建立声誉。

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

  • 不要签署或发布恶意代码

将检测到的恶意代码分发将删除文件的声誉,以及相关数字证书的任何声誉——即使签署了电动车代码签名证书。

  • 申请 WindowsLogo 或 Windows8桌面应用程序认证

你可在此了解更多有关这些计划的资料: Windows8桌面应用程序认证(提交 WindowsStore 所需) Windows 标志程序

我已经寻找了一段时间,所以我将分享我迄今为止的发现。

我还没有在微软的 Windows8中找到任何关于这个特性的文档,但是我可能找错了地方。

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

  • 在运行下载的安装程序或可执行文件之前,Windows8会查询数据库。
  • 数据库可以报告该程序是否已经:
    • 报告为恶意/网络钓鱼(并由微软雇员核实)。
    • 许多人使用[经营]的。

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

资料来源: (给你)(给你)

用户安装程序时发送给 Microsoft 的信息包括 IP 地址、安装程序的散列和数字签名,可能还包括应用程序的文件名。(看这里)

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

也许微软已经建立了一种方法来预先认证您的安装程序与他们,如果没有,您可能只需要等待,直到足够多的人运行安装程序。(但不确定是多少)。

我已经测试了电动汽车证书的解决方案,它确实工作。

遗憾的是,我还要提到 EV 证书与在服务上下文中执行签名的 TeamBuild 不兼容。EV 证书需要一个硬件令牌,该令牌与 SafeNet 公司提供的加密服务提供商(Cryptography Service Provider)接口,以便与所有经授权的 EV 证书供应商(VeriSign 和 DigiCert)一起使用。

当签名发生时,来自 Safenet 的驱动程序将提示输入与在服务上下文中执行有些不兼容的密码。此外,Safenet 还提供保护,防止在实际控制台以外的任何地方进行签名。您甚至不能从远程桌面会话中进行签名。因此,从 Teambuild 内部签署协议充其量是有问题的,而在最糟糕的情况下则是不可能的。

我曾与微软工作,他们还没有能够提供一个解决方案,签署或任何其他方式,以实现即时声誉在 SmartScreen。

我刚刚经历了这个过程,我将添加一些花絮信息到这个。

1)驾驶电动车。这是值得的。下次升级证书时,请升级到 EV 证书。这个价格每年大约多出100美元。电动汽车证书被认为更安全,因为它们更难被盗取。当发给您时,将会发给您一个硬件令牌设备来完成签名。不幸的是,最终签名与自动构建不兼容。

没有听起来那么糟糕。他们将为您提供第二个证书来签署您的可执行文件(在安装程序内部) ,该文件仍然与自动化兼容。安装程序上的签名必须与硬件令牌一起签名。

2)如果你不想获得电动汽车证书,你需要声誉。如果您正在升级,Microsoft 将把声誉从您的旧证书转移到您的新证书。你必须联系 MSDN 技术支持,大约一个星期就可以完成。我提交了我的新旧安装程序——包括新旧证书——他们修复了它。

3)如果这是你的第一张证书,那么你就只能使用 SmartScreen 了,直到你获得声誉为止。你也许应该让你的应用通过 sysdev.microsoft.com 认证。但是,在你在微软赢得好名声之前,你真的不知道你需要多少下载。

这是我的经验之谈。

我们刚刚经历了从 老了 Authenticode 证书到 新的证书的整个过程(不是 EV 证书,只是一个可以在自动构建过程中使用的普通证书)。

Microsoft 不再提供任何将声誉从现有证书转移到新证书的方法。所以不要试图打电话给他们的支持。你只会浪费很多时间和精力。他们也帮不上忙。

微软声称,如果新旧证书具有相同的文本内容,声誉建立得更快。更具体地说,以下是我从 SmartScreen 过滤器的应用程序声誉特性支持团队得到的回复:

请注意,无论何时更新具有已知声誉的证书,在最初下载使用更新证书签名的文件时都可能会看到一些警告。但是,更新证书上的已知声誉通常比新证书上更快地建立起来。虽然更新后的证书建立了声誉,但用户仍然可以通过点击来运行或保存下载。为此,他们选择 Actions | More Options | Run any from DownloadManager。

确保 SmartScreen 不会警告用户的最好方法是运行应该包含在 WindowsSDK 下载中的 Windows 应用程序认证工具包(WACK):

Windows App Certification Kit

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

Final Report - Validation passed

将成功的应用程序认证的 XML 结果上载到 https://sysdev.microsoft.com。几天之后,SmartScreen 将会意识到认证程序所使用的数字签名,并且不再在下载时警告用户。

注意 我们无法在 Windows 8.1的最新更新中验证我们的应用程序,为了让 WACK 成功地验证我们所有的程序,我们不得不使用 Windows 8.1的干净安装。

因为 Windows 8.1已经过时了。

  • 当您通过互联网将所有标准代码签名证书下载到您的个人电脑并试图安装它们时,微软停用了所有可信任的标准代码签名证书,但是如果您通过 USB 或 CD-ROM 分发应用程序,则标准代码签名证书应用程序可以工作。

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

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

enter image description here

  • 这个标准的代码签名证书已经死了。这意味着如果你有标准的代码签名证书,它不会像过去那样可靠地工作,即使 Windows 应用程序证书工具包(WACK)显示带有警告的 PASS,并不意味着它100% 验证成功

enter image description here

你必须购买电动汽车证书(https://www.globalsign.com/en/code-signing/)

所以,为了100% 的成功,跟着勺子喂食:

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

A)开立公司帐户 > 下一步

B)下载 winqual.exe 文件,这是微软提供的 zip 文件,现在用你的标准证书或 EV 证书签署 winqual.exe,然后点击下一步上传文件进行验证。

在我的情况下,它失败了,因为我有标准的证书,微软停止再允许。所以你们现在要做的就是购买电动汽车许可证,否则你们就完蛋了,你们可以花一辈子的时间来解决这个问题,而且毫无头绪。

enter image description here

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

我使用令牌上的 EV 证书(GlobalSign)以自动方式对应用程序进行签名。使用。蝙蝠档案。在。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"

“ cert-token 中的 ExactEnterprisename”应该是证书(标记)中的确切名称

“该文件的版本与您正在运行的窗口的版本不兼容”。在 Windows2008服务器下没有“更多信息”按钮可以选择安装。

当我们使用非微软产品(Delphi)开发 Windows 桌面软件(而非应用程序) ,并使用 Innosetup 作为安装程序时,应用程序验证是毫无意义的。它在那里坐了30分钟,什么也没做,我们只是启动应用程序,然后手动关闭应用程序,并生成一个通过报告。

我们对所有版本和其中的每个可执行文件进行代码签名。

当我们将 XML 上传到 Microsoft 时,经过认证的 XML 位于与我们的主要开发人员帐户无关的站点上,无法将其发布到 Microsoft Store。每个应用程序浪费45分钟。