Windows 引擎签名¶
引擎发布在计算发布校验和之前,会使用 Azure Artifact Signing 对 impeccable.exe 进行签名。发布者为 Renaissance Geek, Inc. 现有的发布资产是不可变的;切勿在同一版本下用签名后的字节替换已发布的未签名二进制文件。
访问边界¶
- Azure 帐户:
impeccable-signing,East US(https://eus.codesigning.azure.net/)。 - Public Trust 证书配置文件:
impeccable-windows。 - 用户分配的托管标识:
impeccable-release-signing,位于同一资源组中。 - 其唯一的 Azure 角色是 Artifact Signing Certificate Profile Signer,范围限定为
impeccable-signing/certificateProfiles/impeccable-windows,而非帐户或订阅。 - 联合凭据:
github-windows-signing,颁发者https://token.actions.githubusercontent.com,受众api://AzureADTokenExchange,主题repo:pbakaus/impeccable:environment:windows-signing。 - GitHub 环境:
windows-signing,限制为匹配engine-v*的 标签,以pbakaus为必需审阅者,并关闭管理员绕过。自我审阅机制允许必需审阅者批准他们自己触发的发布。 - 环境变量
AZURE_CLIENT_ID、AZURE_TENANT_ID和AZURE_SUBSCRIPTION_ID包含的是公共标识符,而非机密。GitHub 中未存储任何客户端机密、私钥或 PFX。
发布与验证¶
运行常规的 bun run release:engine 流程,然后在 GitHub Actions 中审阅并批准该标签对应的 windows-signing 部署。批准前请检查标签的提交和工作流:环境批准会授予该作业以公司身份签名的能力。
构建作业将 Windows 输出上传为 unsigned-windows-x64。一个单独的 Windows 运行器从同一次运行下载该工件,仅对 impeccable.exe 进行签名,并且在上传 impeccable-windows-x64 之前要求有效的 Authenticode 签名、预期的发布者和时间戳。该运行器不会检出仓库代码,也不会执行下载的引擎。只有其作业会收到 OIDC 令牌;只有发布作业才能写入发布。发布过程会等待签名成功,并且只下载 impeccable-* 工件,因此它无法打包未签名的中间产物。
必须使用 RFC 3161 时间戳,因为 Azure 颁发的是短期有效签名证书。不要固定叶证书指纹:Azure 会轮换这些指纹。如果签名或验证失败,请修复原因后重试;不要添加未签名回退方案或削弱环境门禁。
工作流配置由 bun test tests/release-engine-workflow.test.js 进行回归测试。仍需进行一次受保护的真实引擎发布,以端到端验证 Azure OIDC 和 Authenticode。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 im/impeccable