windows-8 - 如何使 SmartScreen 筛选器信任自签名证书

标签 windows-8 internet-explorer-9 internet-explorer-10

Windows 8 下的 Microsoft SmartScreen Filter 是小型开发人员最可怕的噩梦。

虽然我意识到对最终用户的好处以及阻止恶意程序在最终用户的计算机上自行安装的有效性,但我和许多其他开发人员宁愿不支付代码签名证书的年度续订费用,甚至更糟,EV 代码签名证书。此外,当为内部使用而开发的产品使用来自内部 CA 的受信任证书进行签名(存储在受信任的发布商存储中)时,它们仍然会成为过滤器过分热心行为的牺牲品。

开发人员和管理员过去可以通过在受信任的发布者存储中安装发布者的代码签名证书来禁用警告和提示。当创意开发人员安装使用付费 Authenticode 代码签名证书签名并加盖时间戳的先决条件时,他们可以在那里安装自签名代码签名证书。此后,由发布者签名的程序将受到信任,并且不会触发 SmartScreen 筛选器警报。从本质上讲,一旦获得信任,发布商就无需支付经常性费用。

最近对 SmartScreen 筛选器的更改(及其作为 Windows 8 中的操作系统“功能”)的变化清楚地表明 Microsoft 希望您购买代码签名证书,而不是创造性地解决他们为您带来的问题。有没有人发现一种新方法来信任默认使用自签名代码签名证书的发布者(即不显示提示)?除了完全关闭过滤器之外,最终用户可以做什么来让 SmartScreen 过滤器知道始终信任自签名证书?

请注意,购买代码签名证书并不能解决此问题。我正在寻找一种方法来告诉 SmartScreen 筛选器信任不从外部来源购买证书、而是颁发自己的证书供其组织内部使用的发布者。

更新:我想我可能已经找到了解决方法!来自 MSDN ,可以在 Windows 8 和 Internet Explorer 10 上对列为受信任站点的站点禁用 SmartScreen 筛选器。如果有人可以验证此方法是否适用于从 Windows 8 中的受信任站点下载并运行的安装程序,我们将不胜感激,并将对许多 ISV 和内部开发团队有所帮助。这也是回答这个问题所需的解决方法。受信任的站点可以通过组策略进行配置,因此从那里开始就很简单。

以编程方式,可以通过设置计算机的 HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2!2301 或 HKCU\Software\Policies\来关闭受信任站点区域的 SmartScreen 筛选器将用户的Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2!2301设置为0,并将要信任的站点添加到受信任的站点区域中,可以按照this question所示进行.

有人可以验证我提出的解决方法是否适用于从受信任站点下载的未签名或自签名可执行文件吗?我自己并没有使用 Windows 8,因为我的操作系统升级预算都花在了证书费用上。

最佳答案

引自MSDN's website :

Detractors may claim that SmartScreen is “forcing” developers to spend money on certificates. It should be stressed that EV code signing certificates are not required to build or maintain reputation with SmartScreen. Files signed with standard code signing certificates and even unsigned files continue to build reputation as they have since Application Reputation was introduced in IE9 last year. However, the presence of an EV code signing certificate is a strong indicator that the file was signed by an entity that has passed a rigorous validation process and was signed with hardware which allows our systems to establish reputation for that entity more quickly than unsigned or non-EV code signed programs.

换句话说,EV(付费)验证只是决定是否显示 SmartScreen 警告的大型算法中的一个因素。如果您有很多人下载您的程序,或者您的程序下载链接在一段时间内没有更改,那么通过一些工作,您可以让您的程序显示警告。此外,通过对代码进行数字签名,您可以提高应用程序声誉。这直接来自Microsoft's webpage on the topic .

关于windows-8 - 如何使 SmartScreen 筛选器信任自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15538925/

相关文章:

javascript - 如何在 IE 9 中使用 JavaScript 从样式属性获取背景颜色作为十六进制值?

c# - 在运行时更改代码中的属性值

visual-studio - Visual Studio Community 2015 中的 SDK 错误

javascript - IE9是否完全兼容extJS2.2

css - 如何从密码字段中删除眼睛?

jquery - 仅在 IE10 Metro 模式下出现奇怪的过渡行为

html - IE10及之后的伪元素

xaml - 在 Windows Store Apps/Metro XAML 中将 WebView 设置为自动高度

windows-8 - 将本地HTML加载到WebView中

javascript - jquery 1.6.1 - 选择 xml