关于提交签名验证
您可以在本地签署提交和标签,让其他人对您所做更改的源充满信心。 如果提交或标签具有可加密验证的 GPG 或 S/MIME 签名,GitHub 会对提交或标签标记 “已验证”或“部分验证”

提交和标签具有以下验证状态,具体取决于您是否启用了警戒模式。 默认情况下未启用警戒模式。 有关如何启用警戒模式的更多信息,请参阅“显示所有提交的验证状态”。
注:警戒模式目前处于测试阶段,可能会更改。
默认状态
| 状态 | 描述 |
|---|---|
| 已验证 | 提交已签名且签名已成功验证。 |
| 未验证 | 提交已签名,但签名无法验证。 |
| 无验证状态 | 提交未签名。 |
启用了警戒模式的状态
| 状态 | 描述 |
|---|---|
| 已验证 | 提交已签名,签名已成功验证,并且提交者是启用警戒模式的唯一作者。 |
| 部分 验证 | 提交已签名,签名已成功验证,但提交的作者:a) 不是提交者,并且 b) 已启用警戒模式。 在这种情况下,提交签名并不保证作者的同意,因此提交只得到部分验证。 |
| 未验证 | 适用于以下任何情况: - 提交已签名,但无法验证签名。 - 提交未签名,提交者启用了警戒模式。 - 提交未签名,作者启用了警戒模式。 |
仓库管理员可对分析实施必要的提交签名,以阻止未签名和验证的所有提交。 更多信息请参阅“关于受保护分支”。
您可以在 GitHub 上检查已签名提交或标记的验证状态,并查看提交签名未验证的原因。 更多信息请参阅“检查提交和标记签名验证状态”。
GitHub 将自动使用 GPG 通过 GitHub web 界面对您创建的提交进行签名,当您压缩且合并您不是其作者的拉取请求时除外。 由 GitHub 签名的提交在 GitHub 上将具有已验证的状态。 您可以使用 https://github.com/web-flow.gpg 上的公钥本地验证签名。 钥匙的完整指纹是 5DE3 E050 9C47 EA3C F04A 42D3 4AEE 18F8 3AFD EB23。 您可以选择在 Codespaces 中使用 GitHub 对您的提交进行签名。 有关对您的代码空间启用 GPG 验证的更多信息,请参阅“管理 Codespaces 的 GPG 验证”。
GPG 提交签名验证
您可以使用 GPG 通过自己生成的 GPG 密钥对验证签名。
GitHub 使用 OpenPGP 库确认您本地签名的提交和标记,是否根据您添加到 GitHub 帐户的公钥进行加密验证。
要使用 GPG 对提交签名并在 GitHub 上验证这些提交,请执行以下步骤:
S/MIME 提交签名验证
您可以使用 S/MIME 通过组织颁发的 X.509 密钥对提交签名。
GitHub 使用 Debian ca 证书包(Mozilla 浏览器使用的相同信任库)确认您本地签名的提交和标记可根据可信根证书中的公钥加密验证。
注:S/MIME 签名验证可用于 Git 2.19 或更高版本。 要更新 Git 版本,请参阅 Git 网站。
要使用 S/MIME 对提交签名并在 GitHub 上验证这些提交,请执行以下步骤:
无需将公钥上传到 GitHub。
自动程序的签名验证
需要提交签名的组织和 GitHub 应用程序 可使用自动程序对提交签名。 如果提交或标记具有密码可验证的自动程序签名,则 GitHub 会将提交或标记标示为已验证。
自动程序的签名验证仅在请求被验证为 GitHub 应用程序 或自动程序并且不含自定义作者信息、自定义提交者信息、自定义签名信息(如提交 API)时才有效。
延伸阅读
- "对提交签名"
- "对标记签名"
- "提交签名验证故障排除"

