关于提交签名验证

使用 GPG 或 S/MIME,您可以在本地对标记和提交进行签名。 这些标记或提交在 GitHub 上标示为已验证,便于其他人信任更改来自可信的来源。

关于提交签名验证

您可以在本地签署提交和标签,让其他人对您所做更改的源充满信心。 如果提交或标签具有可加密验证的 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 上验证这些提交,请执行以下步骤:

  1. 检查现有 GPG 密钥
  2. 生成新 GPG 密钥
  3. 新增 GPG 密钥到 GitHub 帐户
  4. 将您的签名密钥告诉 Git
  5. 对提交签名
  6. 对标记签名

S/MIME 提交签名验证

您可以使用 S/MIME 通过组织颁发的 X.509 密钥对提交签名。

GitHub 使用 Debian ca 证书包(Mozilla 浏览器使用的相同信任库)确认您本地签名的提交和标记可根据可信根证书中的公钥加密验证。

注:S/MIME 签名验证可用于 Git 2.19 或更高版本。 要更新 Git 版本,请参阅 Git 网站。

要使用 S/MIME 对提交签名并在 GitHub 上验证这些提交,请执行以下步骤:

  1. 将您的签名密钥告诉 Git
  2. 对提交签名
  3. 对标记签名

无需将公钥上传到 GitHub。

自动程序的签名验证

需要提交签名的组织和 GitHub 应用程序 可使用自动程序对提交签名。 如果提交或标记具有密码可验证的自动程序签名,则 GitHub 会将提交或标记标示为已验证。

自动程序的签名验证仅在请求被验证为 GitHub 应用程序 或自动程序并且不含自定义作者信息、自定义提交者信息、自定义签名信息(如提交 API)时才有效。

延伸阅读

此文档对您有帮助吗?隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。