签名标签是什么
签名标签用 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 声明可信签名者;混合团队要先统一验证方式并写进文档。