Gitsign 签名的 Git 提交
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/sign-agent-made-git-commits-with-gitsign。
技能介绍
自动化提交缺的是可验证的来源
当仓库的日常改动来自 CI 流水线、依赖升级机器人或模型代理,git log 只能告诉你“谁提交的”,却回答不了“这次提交是否真的来自那个流程”。伪造一条 commit 的成本极低,而人工审查历史时,签名是少数能直接给出判断依据的信号。问题在于,给提交加签名往往意味着要管理私钥、证书和吊销列表,自动化流程反而最先被排除在外。
基于 Sigstore 的无密钥签名
这个技能把 gitsign 接进提交流程:它在 git commit 时拦截提交,用 OIDC 身份(例如 GitHub Actions 的 workflow_identity)向 Sigstore 的证书颁发服务换取短期证书,对提交对象签名,再把证书和透明日志票据一并附加。整个过程中没有私钥落到本地磁盘。关键步骤包括:提交前完成身份认证、生成一次性证书、签名提交对象,以及事后用 git log --show-signature 或 git verify-commit 校验。
适用边界与注意点
- 校验依赖
gpg,历史中的签名只对当时生成的那一次提交对象有效。 - 无密钥不等于无信任根:它依赖 OIDC 身份提供方与 Sigstore 的公钥基础设施,CI 中的 token 权限过宽会削弱保证。
- 仓库已有大量未签名历史时,新签名无法追溯覆盖过去的提交。
- 签名对象不会跟着 rebase 或合并自动迁移,改写后的提交需要重新签名。
使用场景
- CI 流水线为自动合并的 PR 生成提交时,需要签名,让 reviewer 能看出改动确实来自工作流而非手工伪造。
- 依赖机器人提交升级 PR 时,给提交附 Sigstore 签名,便于安全审计时追溯真实触发者。
- 合规团队复查历史提交,用 `git verify-commit` 逐条校验签名,确认改动来源未被篡改。
- 本地开发机没有私钥存储,但需要给自动化生成的提交加签名,改用短期证书即可完成。
适合人员
- 负责 CI 流水线的 DevOps 工程师,需要在自动合并提交上留下可验证的签名记录。
- 维护开源仓库的安全工程师,希望机器人提交和人类提交在来源上可区分。
- 处理供应链合规的审计人员,需要用签名逐条核对变更的真实来源。
- 在无密钥约束环境下开发自动化工具的工程师,想给程序生成的提交签名。