开源项目的免费代码签名:我们的 SignPath 申请 🔏
在 Windows 上安装过我们游戏的人,可能熟悉这一幕:“Windows 已保护你的电脑”,SmartScreen 提示“未知发布者”,得先点“更多信息 → 仍要运行”才行。这不是病毒,只是因为我们的安装程序还没有签名。我们想让这个警告消失,又不用去买昂贵的证书。
代码签名证书的问题。Windows 的发布者证书(OV 或 EV)每年都要花钱,往往还要和公司验证、硬件令牌绑在一起。对商业工作室来说,这只是众多开支中的一项;对一个开源的家庭项目来说,却是一道真正的坎,而且总觉得这道坎拦错了对象:我们本来就很透明,全部源代码都是公开的。
解决办法:SignPath Foundation。SignPath 为开源项目免费提供代码签名。这正是我们刚刚申请的。目前还没有批准,审核还在进行中,不过这次准备工作很有收获,值得分享。如果你们也想给自己的开源项目签名,下面就是我们当时要做的事。
1. 先决条件。需要一个公开的仓库、一个被认可的 OSI 许可证(我们用的是 AGPL-3.0)、已发布的版本,还要有看得见的活跃开发和文档,另外还有一条没得商量:GitHub 账号必须开启双重验证。项目有一点名气也有帮助:有网站、有视频、有几颗星。
2. 代码签名政策(最重要的部分)。SignPath 想确切知道你们的项目里签名是怎么进行的。所以我们在仓库里加了一份 CODE_SIGNING.md,里面写清楚:哪个仓库是官方仓库,哪些产物会被签名,只有 CI 发布流程才会签名(绝不是某个人笔记本上的本地构建),谁来批准发布,还有隐私政策的链接。这一点是整个申请的核心。
3. 下载页面必须提到 SignPath。表单里要填一个提到 SignPath 的“下载网址”。为此我们重写了 README 里的安全说明。我们很看重诚实:在还没有任何东西被签名的时候,里面明确写着签名目前正在准备中,不做还不属实的承诺。
4. 一份真正的隐私政策。如果你们的软件会处理数据(我们是崩溃报告和玩家账号),就需要一份真正符合 GDPR 的隐私政策,而不是建站工具里的占位文字。
5. 提交。填写表单(仓库、主页、下载和隐私网址、一句话的项目介绍、知名度、构建系统 = GitHub Actions),勾上必选项,发送。
现在就是等待:审核是人工的,通常需要一到两周,可能还会有后续的问题。如果通过了,我们会把签名步骤接入 CI 流水线,之后所有下载游戏的人都不会再看到 SmartScreen 警告。一有消息,我们就会写第二部分,讲具体的 CI 集成。
祝我们好运吧。🤞
留言