首页/开发/Git 与协作速查/签名标签与验证

签名标签与验证

对发布标签做密码学签名:-s 使用默认密钥、-u 指定密钥;接收方用 git tag -v 验证,发布来源可核验。

Git 与协作速查开发更新于 2026-10-13

签名标签是什么

签名标签用 GPG 或 SSH 密钥对发布点做密码学签名:git tag -s 使用配置的默认密钥,-u 显式指定密钥;接收方用 git tag -v 验证签名,确认标签确实由持有相应密钥的人创建。标签签名保护的是发布来源可核验,托管平台也能展示签名状态。

基本信息

创建git tag -s v2.4.0 -m 说明(-s 用默认密钥)
指定密钥git tag -u <密钥ID>,或先配 user.signingkey
验证git tag -v <标签>,平台侧显示签名状态
依赖本机已装 GPG 且密钥可用;接收方需有可信公钥
默认签名tag.gpgSign=true 可让打标签默认走签名
备注签名者与验证者可以是不同人,公钥清单按发布者分别维护

典型使用场景

  • 正式发布:给版本标签签名,用户可核对发布来源
  • 供应链合规:要求制品对应可验证的签名标签
  • 自动化发布:CI 用专用密钥签标签,密钥托管在密码服务里
  • 抽检验证:对历史发布点跑 git tag -v 检查签名与密钥指纹
  • 离线核对:发行说明附公钥指纹与验证命令,用户拿到标签即可自验

常用示例

常用示例
git config --global user.signingkey <密钥ID>   # 配置默认签名密钥
git tag -s v2.4.0 -m 'signed release'          # 创建签名标签
git tag -v v2.4.0                              # 验证签名与签名者
git show v2.4.0 --stat | head -5               # 查看标签对象与指向的提交

签名流程三步

步骤命令说明
配密钥git config user.signingkey <ID>也可用 -u 临时指定
打标签git tag -s <标签> -m <信息>生成带签名的标签对象
验签git tag -v <标签>本地需导入签名者公钥
自动化环境用专用签名密钥,按平台安全规范托管与轮换;密钥未配置或过期会让签名直接失败,CI 里提前做一次可用性检查。
GPG 之外 Git 也支持 SSH 签名:gpg.format=ssh、user.signingkey 指向密钥,验证侧用 allowedSignersFile 声明可信签名者;混合团队要先统一验证方式并写进文档。

易错点

  • 密钥未配置或过期:本地打标签直接失败;把签名可用性检查写进发布流水线,密钥轮换要同步公告
  • 验签依赖可信公钥:没有导入或不信任的密钥会导致验签失败,团队要维护公钥来源清单,重要发布可在 CI 里做验签门禁
  • 只用轻量标签:git tag 名称 不带签名与署名信息,发布点应使用带签名的附注标签
  • 私钥暴露在构建脚本明文里:任何能读脚本的人都能冒充签名;用密码服务托管密钥并限制用途

数据来源与参考

  • Git 官方文档:git-tag(-s/-v)
  • Pro Git 2nd Edition · 7.4 签署工作
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌