签名提交

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

当您为提交添加数字签名时,您提供了额外的保证,确保提交是您本人发出的,而不是冒充者。数字签名是一种用于验证真实性的加密输出。

如果极狐GitLab 可以使用公共 GPG 密钥 验证提交者的身份,则在极狐GitLab UI 中将提交标记为 已验证。然后,您可以为项目配置推送规则以:

  • 拒绝单个未签名的提交。
  • 拒绝所有来自未验证用户的提交。
在 Git 中,提交者和作者字段是不同的。作者编写提交,提交者应用它。提交签名仅验证提交者的身份。

使用以下方式签署您的提交:

验证提交#

要审核合并请求或整个项目的提交,并验证它们是否已签名:

  1. 在左侧边栏中选择 搜索或转到 并找到您的项目。

  2. 要审核提交:

    • 对于项目,选择 代码 > 提交
    • 对于合并请求:
      1. 选择 代码 > 合并请求,然后选择您的合并请求。
      2. 选择 提交
  3. 确定您要审核的提交。根据签名的验证状态,已签名的提交显示 已验证未验证 徽章。

    A list of commits with verified and unverified badges.

    未签名的提交不显示徽章。

  4. 要显示提交的签名详细信息,请选择 已验证未验证 以查看指纹或密钥 ID:

    Verified signature details for a commit.

    Unverified signature details for a commit.

您也可以使用提交 API检查提交的签名。

验证在 Web UI 中进行的提交#

极狐GitLab 使用 SSH 签署通过 Web UI 创建的提交。要在本地验证这些提交,请使用 Web Commits API 获取用于签署 Web 提交的极狐GitLab 公钥。

在已验证的提交中使用 gitmailmap#

History
    • 在极狐GitLab 17.5 引入,使用名为 check_for_mailmapped_commit_emails功能标志 。默认禁用。
此功能的可用性由功能标志控制。有关详细信息,请参阅历史记录。

gitmailmap 功能允许用户映射作者姓名和电子邮件地址。极狐GitLab 使用这些电子邮件地址提供指向提交作者的链接。当使用 mailmap 作者映射时,可能会出现具有未验证作者电子邮件的已验证提交。

对于使用 mailmap 作者映射的 SSH 和 UI 签名,极狐GitLab 显示带有警告标志的橙色已验证标签。要恢复绿色已验证标签,请验证映射的电子邮件地址,或删除 mailmap 条目。

故障排除#

修复签名提交的验证问题#

使用 GPG 密钥或 X.509 证书签名的提交的验证过程可能由于多种原因而失败:

描述可能的修复
UNVERIFIED提交签名无效。使用有效签名对提交进行签名。
SAME_USER_DIFFERENT_EMAIL用于签署提交的 GPG 密钥不包含提交者电子邮件,但包含提交者的其他有效电子邮件。修订提交以使用与 GPG 密钥匹配的电子邮件地址,或更新 GPG 密钥以包含电子邮件地址。
OTHER_USER签名和 GPG 密钥有效,但密钥属于与提交者不同的用户。修订提交以使用正确的电子邮件地址,或修订提交以使用与您的用户关联的 GPG 密钥。
UNVERIFIED_KEY与 GPG 签名关联的密钥没有与提交者关联的已验证电子邮件地址。将电子邮件添加并验证到您的极狐GitLab 个人资料,更新 GPG 密钥以包含电子邮件地址,或修订提交以使用不同的提交者电子邮件地址。
UNKNOWN_KEY极狐GitLab 不知道与此提交的 GPG 签名关联的 GPG 密钥。将 GPG 密钥添加到您的极狐GitLab 个人资料。
MULTIPLE_SIGNATURES已为提交找到多个 GPG 或 X.509 签名。修订提交以仅使用一个 GPG 或 X.509 签名。