我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

关于提交签名验证

使用 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 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。