首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使SmartScreen筛选器信任自签名证书

如何使SmartScreen筛选器信任自签名证书
EN

Stack Overflow用户
提问于 2013-03-21 03:24:57
回答 4查看 23.6K关注 0票数 43

微软在Windows 8下的SmartScreen过滤器是小型开发人员最可怕的噩梦。

虽然我认识到最终用户的好处以及阻止恶意程序在最终用户的计算机上安装自己的有效性,但我和许多其他开发人员宁愿不支付每年更新代码签名证书的费用,更糟糕的是,不支付EV代码签名证书的费用。此外,当为内部使用而开发的产品使用内部CA (存储在可信发布服务器商店中)的可信证书签名时,它们仍然是过滤器过度狂热行为的牺牲品。

开发人员和管理员过去可以通过在受信任的发布服务器存储中安装发布者代码签名证书来禁用警告和提示。创意开发人员可以在那里安装他们的自签名代码签名证书,当他们安装一个必要的签名和时间戳与付费的授权代码签名证书。在此之后,由发行者签名的程序将被信任,不会触发SmartScreen筛选器警报。从本质上说,一旦被信任,出版商就可以免收经常性费用。

最近对SmartScreen过滤器的更改(以及它在Windows 8中作为OS“特性”的包含)清楚地表明,微软希望您购买一个代码签名证书,而不是创造性地解决他们为您创建的问题。是否有人发现了一种新的方法来信任在默认情况下使用自签名代码签名证书的发布者(即,没有显示提示)?除了完全关闭过滤器之外,最终用户还能做些什么来让SmartScreen过滤器知道始终信任自签名证书?

请注意,购买代码签名证书并不是这个问题的答案。我正在寻找一种方法来告诉SmartScreen过滤器信任一个发布者,该发布者不从外部来源购买证书,而是发布自己的证书以供在其组织内使用。

更新:我想我可能已经找到了一个解决办法!MSDN,SmartScreen过滤器可以被禁用在Windows8和Internet 10网站上列出的受信任的网站。如果有人能够验证此方法是否适用于从Windows 8中的可信站点下载和运行的安装程序,这将受到极大的赞赏,并将帮助许多ISV和内部开发团队。这也是回答这一问题所需的解决办法。可以通过组策略配置受信任的站点,因此从那里开始很简单。

以编程方式,可以通过将计算机的HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Internet设置\区域\2!2301或用户的HKCU\Software\Policies\Microsoft\Windows\CurrentVersion\Internet设置\2!2301设置为0来实现关闭受信任站点区域的SmartScreen筛选,并且可以按照这个问题中所示的方式将要信任的站点添加到受信任的站点区域。

请有人验证我在Windows 8上为从受信任的站点下载的未签名或自签名的可执行文件所建议的变通功能?我本人不使用Windows 8,因为我的操作系统升级预算花在了证书费上。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-20 21:47:33

使用微软Windows 8的90天试用版,我已经能够验证我的解决方案确实有效。如果您只想支付一次代码签名证书,而不是支付年费,这种方法也适用于您,但我无法保证。我的解决方案是每台机器,但应该很容易转换为每个用户的工作。

这是我的解决方案:

  1. 建立您自己的证书基础结构。
  2. 将根CA证书、根颁发的任何中间CA证书以及中间CA颁发的任何代码签名证书的副本作为.cer文件发布到您的网站。
  3. 在您的网站上安装由根CA颁发的SSL证书。
  4. 创建一个执行以下任务的安装程序/下载程序应用程序:
    • 将根CA证书(来自您的网站,步骤2)安装到受信任的根证书颁发机构存储中,以供最终用户计算机使用。
    • 通过将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet设置\2!2301设置为0,禁用受信任站点internet区域的SmartScreen筛选器。
    • 通过添加注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\yourdomain.com\yoursubdomain.将网站添加到区域地图
    • 通过创建一个名为https的DWORD,在上一步创建的键中值为2,将您的域映射到受信任的站点区域。

  1. 从Microsoft受信任根程序的成员购买代码签名证书,最好是EV证书。
    • 购买之前,请确保CA用于代码签名证书的证书和时间戳方案不会导致OID的1.3.6.1.4.1.311.10.3.13或1.3.6.1.4.1.311.10.3.14,因为无论证书是否已加盖时间戳,这些都会使签名在证书过期时过期。

  1. 用步骤5购买的证书签名和时间戳您的下载程序/安装程序。验证签名上是否存在生存期限制。如果一切正常,您可以将购买的代码签名证书放在安全的地方并将其锁定。
  2. 发布您的下载程序/安装程序到您的网站。让它成为您所有产品的必备下载。
  3. 从现在开始,您可以使用您自己的内部证书颁发机构颁发的代码签名证书(以及其他证书),而不需要SmartScreen筛选器。

到目前为止,使用这种方法收到的最坏的警告是“这种类型的文件可能会损害您的计算机”。这就是典型的“你在下载一个可执行文件!”警告。它不会隐藏Run选项,也不会使用通过单击ClickOnce中的“发布”生成的引导网页出现在VS2010部署中。

感谢所有的评论和链接。

票数 4
EN

Stack Overflow用户

发布于 2013-05-01 22:42:42

引用MSDN网站

批评者可能会声称,SmartScreen正在“迫使”开发人员在证书上花钱。应该强调的是,在SmartScreen中建立或维护声誉不需要EV代码签名证书。使用标准代码签名证书签名的文件,甚至是未签名的文件,自去年在IE9中引入应用程序信誉以来,一直在建立声誉。然而,EV代码签名证书的存在有力地表明,该文件是由一个实体签名的,该实体已通过严格的验证过程,并使用硬件进行签名,这使得我们的系统能够比无符号或非EV代码签名程序更快地为该实体建立声誉。

换句话说,EV (付费)验证只是确定是否显示SmartScreen警告的大型算法中的一个因素。如果您有很多人下载您的程序,或者您的程序下载链接有一段时间没有更改,通过一些工作,您可以让您的程序而不是显示警告。此外,通过对代码进行数字签名,可以提高应用程序的声誉。这是直接从微软关于这个主题的网页发来的。

票数 24
EN

Stack Overflow用户

发布于 2016-08-04 23:47:32

我发现了一种非常简单的方法,即使没有管理员权限也可以绕过过滤器。你需要做的是:

  1. 开放式记事本
  2. 输入以下行:@%*
  3. 将文件保存为"SkipSmartScreen.bat" (是的,带有引号),保存在与应用程序相同的文件夹中。稍后可以重命名批处理文件。
  4. 若要启动应用程序,请将exe拖到批处理文件中。

这将绕过智能屏幕过滤器。

在Windows 10 Home,Pro和Enterprise以及Windows 8 Pro上进行测试。

它的工作原理:

  • @ -这只是为了查看,它隐藏正在执行的命令的名称。
  • %* -这将扩展到所有传递的命令行参数(例如,您在批处理文件中删除的文件)。
  • 整个过程:它通过批处理文件执行文件,就好像它是批处理文件中的一行一样。由于某些原因,Windows不检查从批处理文件执行的文件。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15538925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档