安装签名应用程序时如何在Win8上通过智能屏幕?
Posted
技术标签:
【中文标题】安装签名应用程序时如何在Win8上通过智能屏幕?【英文标题】:How to pass the smart screen on Win8 when install a signed application? 【发布时间】:2012-08-31 22:19:03 【问题描述】:我们是开发人员,我们有一个数字签名的应用程序安装程序。当我们安装这个应用程序时,它会弹出智能屏幕,影响安装体验。它说
Windows 保护您的电脑
Windows SmartScreen 阻止了无法识别的应用程序启动, 运行此应用可能会使您的 PC 面临风险。
我认为微软除了数字签名之外还有一些验证应用程序的策略。有没有人有这个问题的经验,请给我一些解决这个问题的线索?
【问题讨论】:
另见***.com/q/39437773 【参考方案1】:我们刚刚经历了从旧 Authenticode证书到新的整个过程(不是EV证书,只是可以在我们的自动化构建过程)。
Microsoft 不再提供任何将声誉从现有证书转移到新证书的方法。所以不要试图打电话给他们的支持。你只会浪费很多时间和精力。他们将无法提供帮助。
Microsoft 声称,如果新旧证书具有相同的文本内容,则声誉建立得更快。更具体地说,这是我从 SmartScreen® Filter 的应用程序信誉功能支持团队得到的回复:
请注意,每当您续订具有已知声誉的证书时,您可能会在初次下载使用已续订证书签名的文件时看到一些警告。但是,在更新的证书上建立已知声誉通常比在新证书上更快。虽然更新的证书建立了声誉,但用户仍然可以单击以运行或保存下载。为此,他们选择 Actions |更多选项 |从下载管理器中运行。
确保 SmartScreen 不会警告用户的最佳方法是运行应包含在 Windows SDK 下载中的 Windows 应用认证工具包 (WACK):
运行测试后,WACK 解释如何进行:
将成功申请认证的 XML 结果上传到https://sysdev.microsoft.com。几天后,SmartScreen 将知道用于认证程序的数字签名,并且不再警告用户下载。
注意我们无法在 Windows 8.1 的最新更新上验证我们的应用程序,我们必须使用全新安装的 Windows 8.1 才能让 WACK 成功验证我们的所有程序。
【讨论】:
我想提一下,这个过程花了我大约 2 个小时左右(也许更多)来完成。我不确定项目的规模是否是一个因素,但这不是 2 分钟的过程。 The WACK can be downloaded from here. 似乎 MS 已退休 sysdev.microsoft.com。你知道现在在哪里上传文件吗? 似乎 MS 已退休 sysdev.microsoft.com。你知道现在在哪里上传文件吗? 相反,请在此处提交文件:microsoft.com/en-us/wdsi/filesubmission【参考方案2】:如果您使用从 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 徽标计划
【讨论】:
"如果证书不是来自 CA,而是自签名证书,您将不得不求助于 CA。"业余爱好者或微型 ISV 应通过哪些收入来源收回 CA 每年收取的大约 110 美元的费用? “正如我们过去所讨论的,SmartScreen 为单个程序和用于签署该代码的证书建立了声誉。”引用自链接的 Microsoft 博客文章。许多开源项目依赖于他们的声誉,如果您确实想签署,也可以要求赞助以支付费用。【参考方案3】:我已经搜索了一段时间,所以我将分享我到目前为止找到的内容。
我没有从 Microsoft 找到有关 Windows 8 中此功能的任何文档,但我可能只是在寻找错误的地方。
我阅读的大多数文章都讨论了 SmartScreen 过滤器的工作原理如下:
在运行已下载的安装程序或可执行文件之前,Windows 8 会咨询数据库。 数据库可以报告该程序是否已: 报告为恶意/网络钓鱼,(并由 Microsoft 员工验证)。 被很多人使用/经营。如果有足够多的人运行了该安装程序,而没有将其报告为恶意程序,最终该程序将被标记为安全,其他用户将不会收到烦人的消息。
一些来源:(here) (here)
用户安装程序时发送给 Microsoft 的信息包括 IP 地址、安装程序的哈希值和数字签名,可能还有应用程序的文件名。 (see here)
Microsoft 员工可以直接访问数据库,以添加和标记安全的所有 Microsoft 应用程序。
也许 Microsoft 已经设置了一种方法来向他们预认证您的安装程序,如果没有,您可能只需要等到足够多的人运行安装程序。 (但不确定会有多少)。
【讨论】:
log.nadim.cc/?p=78
的链接已损坏,甚至 Way Back Machine 也没有显示任何内容。内容是否有其他位置?【参考方案4】:
我刚刚经历了这个过程,我将在其中添加一些信息。
1) 获得电动汽车。这很值得。下次升级证书时,升级到 EV 证书。价格每年增加约 100 美元。 EV 证书被认为更安全,因为它们更难被窃取。发给您时,将发给您一个硬件令牌设备以完成签名。不幸的是,最终标志与自动构建不兼容。
这并不像听起来那么可怕。他们将为您提供第二个证书来签署您的可执行文件(在安装程序内),该证书仍然与自动化兼容。安装程序上的签名必须与硬件令牌一起签名。
2)如果你不想获得EV证书,你需要声望。如果您正在升级,Microsoft 会将信誉从您的旧证书转移到您的新证书。您必须联系 MSDN 技术支持,大约一周后即可完成。我提交了我的新旧安装程序——带有新旧证书——他们修复了它。
3) 如果这是您的第一个证书,那么在获得声誉之前,您会一直使用 SmartScreen。您可能应该通过 sysdev.microsoft.com 对您的应用程序进行认证。但是,在您获得 Microsoft 的良好声誉之前,您需要下载多少次才能真正知道。
这是我的经验。
【讨论】:
你能告诉我,在哪里提交应用程序来转移我的旧证书的声誉? 我使用我的 MSDN 订阅提出了开发人员支持请求。 我刚刚完成了与 Microsoft 的整个过程。显然,MSDN 技术支持不再提供有关此主题的任何帮助。您确实需要建立一些 声誉 以使 SmartScreen 警告消失。最简单的方法是使用 Windows App Cert Kit 验证您的应用,然后将结果上传到 sysdev.microsoft.com。 个人可以使用电动汽车,而不是公司吗?业余爱好者应该采取哪些步骤来筹集资金?【参考方案5】:由于 Windows 8.1 已经发布。
当您通过 Internet 将所有标准代码签名证书下载到您的 PC 并尝试安装它们时,Microsoft 停用了所有可信任的标准代码签名证书,但如果您通过 USB 或 CD-ROM 分发您的应用程序,则标准代码签名证书应用程序可以工作。
请勿使用signtool.exe
进行验证(signtool.exe verify /pa mysetup.exe
会显示成功,但当其他用户下载它并尝试安装 SmartScreen 时会一直显示失败)
使用 Windows 应用认证工具包 (WACK)
此标准代码签名证书已失效。意味着如果您拥有标准代码签名证书,它将不再像过去那样可靠地工作,即使 Windows 应用程序认证工具包 (WACK) 显示 PASS 和 WARNING,但这并不意味着其 100% 验证成功您必须购买 EV 证书 (https://www.globalsign.com/en/code-signing/)
所以,要 100% 成功,请按照勺子喂食:
第 1 步:转到 https://sysdev.microsoft.com 并登录
a) 创建公司帐户 > 下一步
b) 下载微软提供的 zip 格式的 winqual.exe 文件,现在用您的标准证书或 EV 证书对 winqual.exe 进行签名,然后单击下一步上传文件进行验证。
就我而言,它失败了,因为我拥有微软不再允许的标准证书。所以你们现在要做的就是买EV驾照,不然你就完蛋了,一辈子都在毫无头绪地解决这个问题。
【讨论】:
这是用于驱动程序开发的。 所以每个人都需要购买每年花费 290 美元的证书以避免智能屏幕?【参考方案6】:我已经测试了 EV 证书解决方案,它确实有效。
遗憾的是,我还要提到 EV 证书与在服务上下文下执行签名的 TeamBuild 不兼容。 EV 证书需要与 SafeNet, Inc 提供的加密服务提供商接口的硬件令牌,以供所有授权的 EV 证书供应商(VeriSign 和 DigiCert)使用。
当签名发生时,来自 Safenet 的驱动程序将提示输入密码,该密码与在服务上下文中执行有些不兼容。此外,Safenet 提供的保护可以防止从实际控制台以外的任何地方进行签名。您甚至无法从远程桌面会话中签名。因此,从 Teambuild 内部签约充其量是有问题的,而在最坏的情况下是不可能的。
我曾与 Microsoft 合作,但他们无法提供解决方法来签署或任何其他方式在 SmartScreen 下获得即时声誉。
【讨论】:
【参考方案7】:不幸的是,我没有足够的代表来简单地评论上述答案之一。但是,如果您为已发布的应用程序指定部分信任(我选择 Internet 区域)并且有代码签名证书,则不会显示智能屏幕警告(在 Win10 上检查)。
【讨论】:
【参考方案8】:我使用令牌上的 EV 证书 (GlobalSign) 以自动方式签署我的应用程序。使用 .bat 文件。在“.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"
“证书中的确切企业名称 - 令牌”应该是证书(令牌)中的确切名称
【讨论】:
它是否删除了智能屏幕对话框?【参考方案9】:“文件的版本与您正在运行的 Windows 版本不兼容”。在 Windows 2008 服务器下,无论如何都没有“更多信息”按钮可供选择安装。
当我们使用非 Microsoft 产品 (Delphi) 开发 Windows 桌面软件(不是“应用程序”)并使用 Innosetup 作为我们的安装程序时,应用程序验证毫无意义。它在那里闲置 30 分钟,我们只需启动应用程序,然后手动关闭应用程序,它就会生成通过报告。
我们对所有版本和其中的每个可执行文件进行代码签名。
当我们将 XML 上传到 Microsoft 时,经过认证的 XML 位于与我们的主要开发人员帐户无关的站点上,无法将其发布到 Microsoft Store。每个应用程序浪费了 45 分钟。
【讨论】:
以上是关于安装签名应用程序时如何在Win8上通过智能屏幕?的主要内容,如果未能解决你的问题,请参考以下文章