Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

配置 Web 提交签名

可以在 GitHub Enterprise Server 的 Web 界面中启用提交自动签名。

谁可以使用此功能?

Site administrators can configure web commit signing for 你的 GitHub Enterprise Server 实例.

关于 Web 提交签名

如果启用 Web 提交签名,GitHub Enterprise Server 将自动使用 GPG 对用户在 你的 GitHub Enterprise Server 实例 的 Web 界面上所做的提交进行签名。 由 GitHub Enterprise Server 签名的提交将具有已验证状态。 有关详细信息,请参阅“关于提交签名验证”。

可以启用 Web 提交签名,轮换用于 Web 提交签名的私钥,以及禁用 Web 提交签名。

启用 Web 提交签名

  1. 在管理 shell 中,创建 PGP 密钥。 记下电子邮件地址和密钥 ID。

    Bash
    gpg --full-generate-key --pinentry-mode=loopback
    
    • 使用默认密钥类型,并且至少有 4096 位且未过期。
    • 使用 web-flow 作为用户名。 如果 web-flow 不可用或无法使用,请使用任何新的唯一用户名。 在本文的以下步骤中使用此用户名。
    • 如果在 管理控制台 中定义了无答复电子邮件地址,请使用该电子邮件地址。 如果没有,请使用任何电子邮件地址,例如 web-flow@my-company.com。 电子邮件地址不需要是有效的。
    • PGP 密钥未能受到通行短语保护。
  2. 将密钥定义为 GitHub Enterprise Server 的环境变量,将 <YOUR-KEY-ID> 替换为 GPG 密钥 ID。

    Bash
    ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
    
  3. 更新 GitHub Enterprise Server 提交签名服务的设置。

    Bash
    sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/gpgverify/gpgverify.hcl.ctmpl:/etc/nomad-jobs/gpgverify/gpgverify.hcl
     
    nomad job run /etc/nomad-jobs/gpgverify/gpgverify.hcl
    
  4. 启用 Web 提交签名。

    Bash
    ghe-config app.github.web-commit-signing-enabled true
    
  5. 通过内置身份验证或外部身份验证在 你的 GitHub Enterprise Server 实例 上创建新用户。 有关详细信息,请参阅“关于身份和访问管理”。

    • 用户的用户名必须与在上面的步骤 1 中创建 PGP 密钥时使用的用户名相同,例如 web-flow
    • 用户的电子邮件地址必须与创建 PGP 密钥时所用的地址相同。
  6. 运行以下命令,将 KEY-ID 替换为 PGP 密钥 ID。

    Bash
    gpg --armor --export KEY-ID
    
  7. 复制以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头并以 -----END PGP PUBLIC KEY BLOCK----- 结尾的 PGP 密钥。

  8. 以创建用于 Web 提交签名(例如 web-flow)的用户身份登录 GitHub Enterprise Server。

  9. 将公共 PGP 密钥添加到用户配置文件。 有关详细信息,请参阅“将 GPG 密钥添加到 GitHub 帐户”。

    注意:不要从 GPG 密钥列表中删除其他公钥。 如果删除公钥,则使用相应私钥签名的任何提交都将不再标记为已验证。

  10. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击

  11. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

  12. 在“ 站点管理”边栏中,单击“管理控制台”。

  13. 在“设置”边栏中,单击“电子邮件”。

  14. 在“无答复电子邮件地址”下,键入在创建 PGP 密钥时所用的同一个电子邮件地址。

    注意:只有在为 你的 GitHub Enterprise Server 实例 启用了电子邮件时,才会显示“无答复电子邮件地址”字段。 有关详细信息,请参阅“配置电子邮件通知”。

  15. 在“设置”边栏下,单击“保存设置”。

    注意:保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  16. 等待配置运行完毕。

轮换用于 Web 提交签名的私钥

  1. 在管理 shell 中,创建 PGP 密钥。 记下电子邮件地址和密钥 ID。

    Bash
    gpg --full-generate-key --pinentry-mode=loopback
    
    • 使用默认密钥类型,并且至少有 4096 位且未过期。
    • 使用 Web 提交签名用户的用户名,例如 web-flow
    • 使用 管理控制台 中定义的无答复电子邮件地址,该地址应与 Web 提交签名用户的电子邮件地址相同,例如 web-flow
    • PGP 密钥未能受到通行短语保护。
  2. 将密钥定义为 GitHub Enterprise Server 的环境变量,将 <YOUR-KEY-ID> 替换为 GPG 密钥 ID。

    Bash
    ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
    
  3. 更新 GitHub Enterprise Server 提交签名服务的设置。

    Bash
    sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/gpgverify/gpgverify.hcl.ctmpl:/etc/nomad-jobs/gpgverify/gpgverify.hcl
     
    nomad job run /etc/nomad-jobs/gpgverify/gpgverify.hcl
    
  4. 运行以下命令,将 KEY-ID 替换为 PGP 密钥 ID。

    Bash
    gpg --armor --export KEY-ID
    
  5. 复制以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头并以 -----END PGP PUBLIC KEY BLOCK----- 结尾的 PGP 密钥。

  6. 以创建用于 Web 提交签名(例如 web-flow)的用户身份登录 GitHub Enterprise Server。

  7. 将公共 PGP 密钥添加到用户配置文件。 有关详细信息,请参阅“将 GPG 密钥添加到 GitHub 帐户”。

    注意:不要从 GPG 密钥列表中删除其他公钥。 如果删除公钥,则使用相应私钥签名的任何提交都将不再标记为已验证。

禁用 Web 提交签名

可以为 你的 GitHub Enterprise Server 实例 禁用 Web 提交签名。

  1. 在管理 shell 中,运行以下命令。

    Bash
    ghe-config app.github.web-commit-signing-enabled false
    
  2. 应用配置。

    Bash
    ghe-config-apply