尽管我签署了可执行文件,但智能屏幕过滤​​器仍然抱怨,为什么?

信息安全 代码签名 IE浏览器 微软边缘
2021-08-12 01:32:49

首先,这是我第一次使用代码签名。

从 Certum 购买了标准代码签名3 年。

我打算主要在捷克共和国发布申请。

但是,在 Windows 10 上,当我下载签名的可执行文件时,我会被阻止应用程序的智能屏幕过滤​​器撞到。

我不知道该怎么想。我使用了 SHA256 和时间戳。我在完全更新的 Windows 8.1 上签名。

这是我用来签署 EXE 文件的代码片段:

SignTool sign /fd SHA256 /a /tr http://time.certum.pl "Barvy.exe"

我做错什么了吗?

这是EXE文件签名的图片细节:

电子签名

2个回答

使用标准代码签名证书签名的应用程序需要具有良好的声誉才能通过智能屏幕过滤​​器。Microsoft 根据世界范围内相同应用程序的安装数量来建立可执行文件的声誉。由于您尚未发布您的应用程序(因此尚未建立声誉),Smart Screen 将继续标记该应用程序。

有两种解决方案:要么等到应用程序拥有庞大的用户群,它的声誉将被智慧屏幕调整。但是,当前的工作状态可能会阻止用户安装和信任该应用程序。第二种选择是使用 EV(扩展验证)代码签名证书对其进行签名。使用 EV 证书签名的应用程序会立即建立其声誉。引用微软的话:

由 EV 代码签名证书签名的程序可以立即通过 SmartScreen 信誉服务建立信誉,即使该文件或发布者之前不存在信誉。

您可以在Microsoft SmartScreen 和扩展验证 (EV) 代码签名证书博文中找到更多详细信息

如果你有一个标准的代码签名证书,你的应用程序需要一些时间来建立信任。Microsoft 确认扩展验证 (EV) 代码签名证书允许跳过这段信任建立期。 据微软称,扩展验证证书允许开发人员立即在 SmartScreen 中建立声誉。否则,在您的应用程序建立信任之前的一段时间内,用户将看到类似“Windows Defender Smartscreen 阻止无法识别的应用程序启动。运行此应用程序可能会使您的 PC 处于危险之中。”的警告,并带有两个按钮:“仍然运行”和“不要跑”。

另一个 Microsoft 资源声明如下(引用):“虽然不是必需的,但由 EV 代码签名证书签名的程序可以立即通过 SmartScreen 信誉服务建立信誉,即使该文件或发布者不存在先前的信誉。EV 代码签名证书也有唯一标识符,这使得在证书续订期间维护声誉变得更加容易。”

我的经验如下。自 2005 年以来,我们一直使用常规(非 EV)代码签名证书来签名 .MSI、.EXE 和 .DLL 文件,并带有时间戳,并且 SmartScreen 从未出现过问题,直到 2018 年,只有一个案例需要 3 天为我们的应用程序的 beta 版本建立信任,因为我们已将其发布给 beta 测试人员,并且它处于证书有效期的中间。我不知道 SmartScreen 在我们的应用程序的特定版本中可能不喜欢什么,但从那时起就没有任何抱怨。因此,如果您的证书是非 EV,它是一个签名的应用程序(例如 .MSI 文件),它将随着时间的推移建立信任,而不是证书。在我们的例子中,证书可以在几个月前颁发并用于签署许多文件,但对于您发布的每个签名文件,