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

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

Windows保护您的电脑

Windows SmartScreen阻止无法识别的应用程序启动,运行此应用程序可能会使您的电脑处于危险之中。

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

如果您使用从CA购买的证书对安装程序进行了签名,则应该联系CA以解释为什么他们无法与Microsoft一起工作以摆脱此警告。

如果证书不是来自CA,而是自签名证书,则必须使用CA.

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

http://blogs.msdn.com/b/ie/archive/2012/08/14/microsoft-smartscreen-amp-extended-validation-ev-code-signing-certificates.aspx

最佳实践

开发者仍应遵循我们在过去的博客文章中提出的最佳做法。 我们在该指南中增加了通过Windowsapp store分发应用程序的附加选项,以及EV代码签名选项:

  • 通过Windowsapp store分发您的应用

Windows 8应用程序需要通过Windowsapp store开发者入职和应用程序审查过程。 Windows 8应用程序不适用于Windows 8中的SmartScreen应用程序信誉检查或警告。

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

生成信誉并分配给数字证书以及特定文件。 数字证书允许将数据汇总并分配给单个证书,而不是许多单独的程序。 虽然不是必需的,但即使没有该文件或发布者的先前声誉,通过EV代码签名证书签署的程序也可立即使用SmartScreen声誉服务build立声誉。 EV代码签名证书也有一个唯一的标识符,这使得维护证书更新中的信誉更容易。 只有作为Windows根证书程序成员的CA颁发的Authenticode证书才能build立信誉。

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

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

分发被检测为恶意的代码会从文件中删除声誉,并从相关数字证书中删除声誉 – 即使使用EV代码签名证书进行签名。

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

在此处了解有关这些程序的更多信息:Windows 8桌面应用程序authentication(Windows Store提交需要)Windows徽标计划

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

微软不再提供将信誉从现有证书转移到新证书的手段。 所以不要试图打电话给他们的支持。 你会浪费很多时间和精力。 他们将无法提供帮助。

微软声称,如果新旧证书具有相同的文本内容,声誉就会更快build立起来。 更具体地说,以下是我从SmartScreen®Filter的应用程序声誉function支持团队获得的回复:

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

确保SmartScreen不会警告用户的最好方法是运行应包含在Windows SDK下载中的Windows应用程序authentication套件(WACK)

Windows应用程序认证套件

运行testing后,WACK解释如何进行:

最终报告 - 验证通过

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

注意:我们无法在Windows 8.1的最新更新上authentication我们的应用程序,为了使WACK成功validation我们的所有程序,我们必须使用Windows 8.1的全新安装。

我一直在寻找,所以我会分享我迄今为止发现的。

我还没有发现有关Windows 8中的这个function的任何文档,但我可能只是在错误的地方看。

我阅读的大部分文章都讨论了SmartScreenfilter的工作原理如下:

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

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

一些资料来源:( 这里 )( 这里 )

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

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

也许微软已经设置了一个方法来预先validation你的安装程序,如果没有,你可能只需要等到足够的人运行安装程序。 (但不知道会有多less)。

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

1)获得电动汽车。 这很值得。 下次您升级您的证书时,升级到EV证书。 每年的价格大约是100美元。 EV证书被认为更安全,因为他们更难以窃取。 发给你的时候,硬件令牌设备将会发给你来完成这个标志。 不幸的是,最终的标志与自动构build不兼容。

这听起来并不可怕。 他们将为您提供第二个证书来签署您的可执行文件(在安装程序内),并保持与自动化的兼容性。 安装程序上的签名必须与硬件令牌一起签名。

2)如果你不想获得EV证书,你需要声望。 如果您正在升级,Microsoft将把旧证书的声誉转移到新证书中。 您必须联系MSDN技术支持,并在一个星期内完成。 我提交了我的新老安装人员 – 新旧证书 – 然后他们修好了。

3)如果这是您的第一个证书,您将被SmartScreen卡住,直到您获得声望。 您可能应该通过sysdev.microsoft.com获得您的应用程序authentication。 但是,在获得与Microsoft的良好声誉之前,并不知道需要多less下载。

这是我的经验。

由于Windows 8.1已经结束。

  • 当您通过互联网将它们下载到您的PC并尝试安装时,Microsoft将所有标准代码签名证书都禁用,但是如果您通过USB或CD-ROM分发您的应用程序,标准代码签名证书应用程序将起作用。

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

使用Windows应用程序authentication套件(WACK)

在这里输入图像描述

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

在这里输入图像描述

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

所以,要成功100%,请按照下列步骤进行:

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

a)接下来创build一个公司账户

b)下载microsoft提供的zip文件winqual.exe,现在用标准证书或EV证书签名winqual.exe,然后点击下一步上传文件进行validation。

在我的情况下,它失败了,因为我有微软停止允许的标准证书。 所以你们现在所要做的就是购买EV许可证,否则你就会被搞砸了,而且可能会一辈子解决这个问题而毫无头绪。

在这里输入图像描述

我已经testing了EV证书解决scheme,它工作。

不幸的是,我还会提到EV证书与TeamBuild不兼容,它在服务的上下文中执行签名。 EV证书需要一个硬件令牌,与SafeNet,Inc提供的encryption服务提供程序接口,以供所有授权的EV证书供应商(VeriSign和DigiCert)使用。

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

我曾与微软公司合作,他们还没有能够提供解决scheme,以签署或任何其他方式来实现SmartScreen下的即时声誉。

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

我使用令牌上的EV证书(GlobalSign)以自动方式签署我的应用程序。 使用.bat文件。 在“.bat”文件中,inputex:(对于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" 

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

“该文件的版本与您正在运行的Windows版本不兼容”。 在Windows 2008服务器下没有“更多信息”button来select安装。

当我们使用非微软产品(Delphi)开发Windows桌面软件(而不是“应用程序”),并使用Innosetup作为我们的安装程序时,应用程序validation是没有意义的。 它在那里呆了30分钟,什么都不做,我们只需启动应用程序,然后手动closures应用程序,它会生成一个通行证报告。

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

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