代码签名应用程序为何触发 Microsoft SmartScreen 警告
最近发现,当用户尝试运行其已签名的应用程序时,Microsoft SmartScreen警告的出现频率有所增加。

Microsoft SmartScreen是一个基于信誉评估的安全系统,会在允许下载的应用程序运行之前对其进行评估。
微软对 SmartScreen 的定义旨在实现以下功能:
发布者信誉 → 代码签名证书的可信度
文件信誉(哈希值) → 该文件是否已被广泛下载且值得信赖
这意味着信任并非一蹴而就——即便是经过正确签名的申请也是如此。
类似以下警告:“Windows 已保护您的电脑”
这种情况通常发生在以下情形:
该应用程序是新推出的或最近发布的
该文件的下载率较低
正在使用新的证书
二进制文件已更改(新版本 = 新文件哈希值)
微软明确指出,每个文件都必须根据实际使用情况建立自己的信誉
即使是微小的更新也会重置文件的信誉值。
一个常见的误解是:
如果我的应用程序已签名,就不应该显示 SmartScreen 警告。
SmartScreen 并非如此运作。
代码签名可确保身份和完整性
SmartScreen 会随时间推移评估信誉
有效的签名 ≠ 立即信任

从历史上看,EV代码证书有助于更快地建立信誉。然而,根据微软目前的指导意见:
无论是EV代码证书还是标准代码证书,都依赖于信誉的积累
关键因素依然在于实际应用情况和信任信号
声誉是需要靠努力赢得的,而不是凭空得来的。
在以下情况下,声望会随着时间的推移而提升:
用户下载并安装该应用程序
未检测到任何恶意行为
该发行商会持续为软件签名
SmartScreen 通过遥测数据和信号来判断软件是否为常见下载且安全。
在此之前,该应用程序将被视为“未知”并被谨慎标记。


新应用程序几乎总是会收到初始警告
更新和新版本将暂时重置信任
规模较小或小众的应用程序可能需要更长时间才能建立声誉
保持证书的一致性
在各个版本中使用相同的发布者身份
扩大分销
鼓励从可信渠道下载
签署所有免责声明
确保每个二进制文件都经过正确签名并添加了时间戳
避免频繁更换证书
新证书需要重建信誉
与用户沟通
请告知用户,新软件安装时可能会出现初始警告
即使使用 GlobalSign 的受信任代码签名证书:
声誉需要时间来积累
预计初期会出现警告
信任源于实际使用
