top of page

开源项目的免费代码签名:我们的 SignPath 申请 🔏

作家相片: Marcel Dütscher
Marcel Dütscher
7月12日
讀畢需時 2 分鐘

在 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 集成。


祝我们好运吧。🤞

最新文章

查看全部
为什么新版本叫 2026.7.19,而不是 0.9.2 🗓️

今天更新的人,会从 0.9.1 版本一下跳到 2026.7.19。这看起来像是笔误,其实是一个刻意的决定:我们改变了版本号方案,从“语义化”版本改成了基于日期的版本(年.月.序号)。原因如下。 旧方案回答的是没人问的问题。语义化版本(0.9.1、1.2.3 ……)来自软件库的世界。在那里它很棒:第一个数字承诺“不会破坏任何东西”,第二个承诺“只有新增”,第三个承诺“只有修复”。而游戏不对任何人做这

 
 
大扫除:我们终于把 GitHub 的缓存用对了 🧹

在上一篇技术文章里,我们测量了构建和检查流水线到底花了什么:不是钱,而是等待时间和存储空间。那篇文章的结尾是“清理工作已经计划好,但还没完成”。结果比预想的快:从今天中午起,它已经进入主分支了。下面是数字。 先看结果。我们仓库的缓存用量,从 63 个条目共 5.32 GB,降到了 13 个条目共 2.46 GB。以前每个拉取请求都要跑的 C# 安全分析,现在在那里只需要 4 秒,而不是 4 分半,

 
 
每月一千次构建,而且一次都不花钱 ⚙️

先更正一件事。这篇文章的第一版声称,我们的 GitHub 构建分钟数用完了,被迫升级到 Pro 账号。这是错的,而且只要看一眼文档就能弄清楚:对公开仓库来说,GitHub 的构建分钟数是免费的。产物和缓存也一样。我们的仓库从五月底起就是公开的,所以我们从来没有为任何一分钟付过钱,以后也不会。与其悄悄改掉文字,我们宁愿重写一遍,告诉你们测量到底显示了什么。结果比错误的版本有趣得多。 先猜测,后查看。

 
 

留言


這篇文章不開放留言。請連絡網站負責人了解更多。
bottom of page