软件发布后,用户双击却弹出刺眼的"未知发布者"警告,甚至被杀毒软件直接拦截——这是无数独立开发者和中小企业最头疼的场景。问题根源只有一个:你的软件没做数字签名认证(代码签名)。
一、为什么要给软件做数字签名?
数字签名不是"装样子",它解决三个核心问题:
1.证明来源:告诉用户"这个软件确实是你/贵司发布的",消除"未知发布者"警告。
2.防篡改:文件一旦被木马注入或修改,签名立刻失效,系统会提示文件已被更改。
3.过杀软/Defender 拦截:有正规CA签名的软件,被Windows SmartScreen和杀软误报的概率大幅降低;EV级证书还可直接获得SmartScreen信誉,基本不弹警告。
自签名证书(自己用OpenSSL生成的)只能在内网或测试环境用,公网分发不会被系统信任,SmartScreen照样拦。
二、选对证书类型,别花冤枉钱
代码签名证书分三类,按需求对号入座(以Certum代码签名证书为例):

建议:做Windows桌面软件上架下载站或官网分发,至少上OV代码签名证书;如果涉及 .sys驱动或希望用户下载后完全不弹警告,直接上EV代码签名证书。
主流CA机构有DigiCert、GlobalSign、Sectigo(Comodo)、Certum等,国内可通过其授权服务商(如ssldun等)申请,有中文客服帮审材料,不容易被驳回
三、申请流程四步走(以Certum企业OV代码签名证书为例)
1.选型下单:在服务商(如ssldun在线平台)选品牌和类型,提交企业名称、联系人邮箱电话。
2.提交材料:营业执照、法人身份证明,EV 可能还要办公地址证明或对公验证。
3.CA验证:CA通过工商库交叉核验,可能打企业公开电话确认,OV代码签名证书1–2 个工作日。
4.获取证书:Certum的OV代码签名证书存储在云端,通过符合国际标准的HSM(硬件安全模块)云端保管私钥,开发者在完成企业核验后,无需等待任何物理介质,通过账号与动态验证码即可在线完成签名操作。
四、新手最常踩的5个坑
1.没加时间戳:证书过期后签名失效,老用户运行软件报错——这是最高频翻车点。
2.用自签名证书发公网:系统不信任,SmartScreen照拦不误。
3.签名后又改了EXE:哪怕改一个字节都会破坏签名,必须在最终编译完成后、打包前签名。
4.哈希算法用MD5/SHA1:现代Windows已不认可,务必SHA256起步。
5.证书链不完整:部分机器提示"无法验证证书",签名时可附加中间证书/ac Intermediate.cer解决。