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

How*_*ard 74 c# windows-installer

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

Windows保护您的PC

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

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

Lex*_* Li 46

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

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

Microsoft已经在其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徽标计划


Pie*_*aud 45

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

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

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

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

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

Windows应用认证套件

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

最终报告 - 验证通过

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

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

  • 我想提一下,这个过程花了我大约2个小时左右(可能多一点)来完成.我不确定项目的大小是否是一个因素,但这不是一个2分钟的过程. (15认同)
  • 似乎MS退休了sysdev.microsoft.com.你知道现在上传文件的位置吗? (6认同)
  • 看来 MS 退休了 sysdev.microsoft.com。你知道现在在哪里上传文件吗? (3认同)
  • 相反,请在此处提交文件:https://www.microsoft.com/en-us/wdsi/filesubmission/ (3认同)
  • [WACK可以从这里下载](https://dev.windows.com/en-us/develop/app-certification-kit). (2认同)

Xan*_*tix 15

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

我没有在Microsoft Windows 8中找到有关此功能的任何文档,但我可能只是在错误的地方找工作.

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

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

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

一些消息来源:( 这里)(这里)

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

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

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


小智 12

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

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

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

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

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

那是我的经历.

  • 您能告诉我,在哪里提交应用程序以转移我的旧证书的声誉? (3认同)
  • 我刚刚与微软一起完成了整个过程.显然,MSDN技术支持不再对此主题提供任何帮助.你真的需要建立一些**声誉**才能使_SmartScreen_警告消失.最简单的方法是使用Windows App Cert Kit验证您的应用程序,然后将结果上传到sysdev.microsoft.com. (2认同)

小智 5

自Windows 8.1以来.

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

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

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

在此输入图像描述

  • 这个标准的代码签名证书已经死了.意味着如果您拥有标准代码签名证书,它就不会像过去那样可靠地工作,即使Windows应用认证工具包(WACK)显示PASS with WARNING,也不意味着它100%验证成功

在此输入图像描述

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

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

第1步:访问https://sysdev.microsoft.com并登录

a)创建公司帐户>下一步

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

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

在此输入图像描述

  • 这是为了驱动程序开发. (4认同)