跳转到内容

EV代码签名指南:成本、Windows与HSM

在Windows上下载文件时,浏览器和系统都会检查其病毒和信誉。

如果你想让用户信任你的应用,就必须购买EV(扩展验证)代码签名证书——价格不菲。但仅仅买到证书远远不够,过程中还有各种坑,我最终花了超4千美元!

我们开发的是一款Flutter应用,管理iOS、macOS并集成App Store Connect (aso.dev),而许多ASO专家只用Windows……

我们用的是M1芯片的MacBook,虚拟化构建Windows x86应用几乎不可能(我试过,太难了)。

首先,我申请了微软的Founders Hub,轻松拿到$5000 Azure额度。

花了两周搭建CI/CD,变量和PATH设置很简单。但我又想起为什么不喜欢Windows——本地一切正常,CI/CD就全靠玄学……

打包好.exe安装包后,发现从网站下载安装是个大难题……

Windows Smart Screen

Windows Smart Screen

Google让我了解了EV代码签名证书和普通代码签名证书。区别?EV贵2-3倍。深入研究后发现,EV能解决Windows SmartScreen,普通证书95%情况下无效。

EV证书不能保存为文件,必须用HSM硬件令牌,而且令牌不能通过RDP远程用(我亲测),而我的构建在云端。于是我找到了Azure Dedicated HSM,费用如下:

HSM定价

HSM定价

云端证书必须支持云端(理论如此)。

细心的朋友会发现,费用是按小时计费!我没注意,结果花了超**$3000**!幸好用的是创业补贴,不然真要破产了。

Azure月账单

Azure月账单

我把Key Vaults能删的都删了,每天查账,但钱还是在流失。最后才发现要把已删密钥块也彻底清理,才算结束了云证书的噩梦。

我们在IdenTrust下单,收货和付款地址不一致,和银行账单地址也不符,钱被冻结一周,客服也无能为力。退款后又下单,这次不用实体令牌,付款成功,但因公司成立未满三年被拒,钱又冻结一周。

最后在SSL.com找到$349的证书(真是折腾)。他们有详细的YubiKey操作说明,但要求YubiKey FIPS

理论上可以在Mac上签.exe,但我没准备好。补贴只有一年,最终还是得买Windows机。调研后买了HP Pro Mini 400 G9 DM/DOS/i5-12500T/8GB/512GB(约$540),和YubiKey 5C($50)。

有趣的是,只有在Windows上才能制作可启动U盘!(为此又浪费了一天)。

投影仪救场,显示器送修中

投影仪救场,显示器送修中

企业验证需要Google地图上的地址(还有其他要求,但这是最简单的)。结果发现,新增企业比修改已有信息容易得多,即使你是原主。我们的地址已列出但被隐藏,尝试公开时被要求视频验证,但没人审核。

Google打了六次电话(三次接通),但数据还是没更新。即使我们提交了公司法律文件,流程依然卡住。最后只能新建一个正确地址,SSL.com验证后再删掉旧的。

所有验证通过、Google地图数据更新、收到ASO.DEV LLP证书后,终于可以尝试签名了。

最大的问题?SSL.com极力推销他们的e-codeSign云服务(很贵)。我只好自己摸索本地用私钥签名的办法。

具体操作不赘述,推荐参考:

  • 代码签名无法通过RDP远程桌面操作!
  • 安装包不要用聊天工具传,建议用CDN,否则系统可能拦截。
  • SSL.com验证Attestation Certificate并附在订单上。如遇签名报错,等文件更新或联系客服。

我因签名报错买了FIPS,几天折腾后发邮件给客服,问题解决(他们更新了Verify Attestation Certificate)。第二个令牌因缺少私钥无法签名,也没精力再折腾。

截图被禁,只能拍照

截图被禁,只能拍照

还有一点很重要:我们最初研究证书,是因为Windows应用自动更新失效。签名后依然无效,最后把配置从sparkle:edSignature改为sparkle:dsaSignature,一切才恢复正常。