Microsoft Defender SmartScreen正在伤害独立开发人员

2020-06-03 01:03:17

假设您是一名独立开发人员,是时候向全世界发布您的应用程序了。为了方便起见,您构建了一个安装程序并开始分发它。一个勇敢的早期采用者下载并运行它,结果却得到了这个措辞强硬的警告:

事实上,在今天的Windows环境中,微软积极阻止二进制文件运行;这要归功于“SmartScreen”。

SmartScreen收集所有Windows用户的安装数据,以建立“信誉”。如果该程序没有建立良好的声誉,您会收到这条严重的警告消息。此时,大多数用户已经删除了.exe,认为它是恶意软件,但通过单击“更多信息”,然后单击“仍要运行”,可以绕过SmartScreen。

但是你是如何建立声誉的呢?首先,微软需要能够收集谁发布了这款应用的信息,这是通过代码签名证书来完成的。最明显的暗示是,未签名的应用程序总是会触发SmartScreen。更隐晦的含义是,对于单个开发人员来说,获取代码签名证书是一笔很大的费用。目前还没有等同于代码签名证书的“让我们加密”;因此您必须从受信任的机构购买它。价格范围很广,但一张有效期仅为一年的证书通常售价约为100美元。

但是,假设您咬紧牙关,给自己买了一块由计算机生成的高价质数,对代码签名,然后重新发布应用程序。您现在可以开始让用户安装您的应用程序了,对吗?不对。

即使使用新数字签名的应用程序,SmartScreen仍会触发。毕竟你是一个默默无闻的新出版商,SmartScreen的“建立声誉”部分完全是一个黑匣子。所以这里是第22条军规:要建立声誉,你需要人们安装你的软件,以便微软收集数据。要让用户安装您的软件,他们不需要收到强烈建议您的代码将损害他们计算机的消息。

如果您尝试使用Winget发布您的软件(简而言之:一旦Windows应用商店推出测试版,什么可能会取代它),您将从Microsoft收到以下消息:

用微软的话说,如果你的应用程序触发了SmartScreen,就被认为是恶意软件。它们以通过专用链接提交文件供审阅的形式链接到潜在的解决方案。如果您遵循所有这些流程,您将得到以下响应:

我们已经审阅了您提交的文件,并确认提交的文件是干净的。Windows Defender Antivirus不会将它们报告为恶意软件。您观察到的消息是来自Windows Defender SmartScreen的通知,表明该应用程序在我们的系统中没有已知的信誉。应用程序信誉警告用于在应用程序没有已知的正面信誉时通知最终用户。这并不意味着该应用程序是恶意的,只是它是“未知的”。请注意,用户仍然可以继续下载和运行该应用程序。在大多数情况下,数字签名的应用程序将有机地建立声誉,除非发生了诋毁现有声誉的事情,例如被用来签署恶意软件。我们将进一步调查此问题,如果需要更多信息,我们将与您联系。

本质上:您的应用程序是干净的,但我们不会对SmartScreen错误采取任何措施。我们的云机器人霸主们将决定什么时候可以信任你。

假设您最终被作为可信发布者的算法所接受。您的证书即将过期,您将其续订。互联网世界里简单的“一切照常”。然而,在Windows软件的世界里,这意味着你的声誉将重置为零。证书续订不被SmartScreen识别,它再次将您视为新的发布者您必须再次经历这个痛苦的过程。

这可以通过购买有效期更长的证书来缓解,但在这一点上,成本对于大多数独立开发人员来说只是一个不可逾越的障碍。

对于独立开发人员来说,这是路的尽头。对于出版商来说,还有另一种解决方案:扩展验证码签名证书。使用其中之一对代码进行签名将自动绕过SmartScreen。它只为公司保留,顾名思义,它需要接受证书颁发机构进行的额外背景调查。

Digicert.com是一家很受欢迎的代码签名证书认证机构,每年的售价高达699美元。

作为一家独立开发商,一个解决方案是克服成立一家独资公司的麻烦,并支付这些证书所要求的离谱价格。当然,对大多数人来说,这并不是一个现实的努力。

“开发人员,开发人员,开发人员!”这是史蒂夫·鲍尔默(Steve Ballmer)的呐喊,也是定义他成为微软首席执行官的演讲之一。这些臭名昭著的话是在2006年说出来的。14年后,在萨蒂亚·纳德拉(Satya Nadella)的领导下,微软因变得比以往任何时候都更加开放而受到称赞。具有讽刺意味的是,微软似乎让它的Windows环境对他们心爱的开发人员怀有极大的敌意。要扭转这种可怕的局面,需要改变SmartScreen或证书的工作方式。

将我的姓名、电子邮件和站点URL保存在浏览器中,以备下次发表评论时使用。