Skip to main content

配置 Web 提交签名

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

谁可以使用此功能?

Site administrators

关于 Web 提交签名

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

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

关于持久提交签名验证

持久提交签名验证与 Web 提交签名相关但不同。 此功能可确保保留提交的已验证状态,即使签名密钥已更改或吊销也是如此。

持久提交签名验证有助于维护存储库提交历史记录中的长期完整性和可信度。 但是,可以选择在优先将磁盘使用率降到最低的环境中禁用此功能,尤其是对于具有大量已验证提交的大型安装。

有关禁用持久提交签名验证的信息,请参阅“禁用持久提交验证”。

启用 Web 提交签名

改进的翻译与技术文档相关设置有关,请确保企业网站管理员设置中的PGP密钥及网络提交签名的选项已妥善配置。

  • 使用 web-flow 作为用户名。 如果 web-flow 不可用或无法使用,请使用任何新的唯一用户名。 在本文的以下步骤中使用此用户名。
  • 如果在 管理控制台 中定义了无答复电子邮件地址,请使用该电子邮件地址。 如果没有,请使用任何电子邮件地址,例如 web-flow@my-company.com。 电子邮件地址不需要是有效的。
  • PGP 密钥未能受到通行短语保护。1. 将密钥定义为 GitHub Enterprise Server 的环境变量,将 <YOUR-KEY-ID> 替换为 GPG 密钥 ID。
```bash copy
ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
```1. 更新 GitHub 提交签名服务的设置。
Bash
sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/gpgverify/gpgverify.hcl.ctmpl:/etc/nomad-jobs/gpgverify/gpgverify.hcl
 
sudo nomad job run /etc/nomad-jobs/gpgverify/gpgverify.hcl
  1. 启用网络提交签名。

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

    • 用户的用户名必须与在上面的步骤 1 中创建 PGP 密钥时使用的用户名相同,例如 web-flow
    • 用户的电子邮件地址必须与创建 PGP 密钥时所用的地址相同。 数据 重用企业网站管理员设置.向Web流用户添加密钥 %} 数据 重用企业网站管理员设置.电子邮件设置 %}
  3. 在“无答复电子邮件地址”下,键入在创建 PGP 密钥时所用的同一个电子邮件地址。

    注意

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

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

    注意

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

  5. 等待配置运行完毕。

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

改进的翻译与技术文档相关设置有关,请确保企业网站管理员设置中的PGP密钥及网络提交签名的选项已妥善配置。

  • 使用 Web 提交签名用户的用户名,例如 web-flow
  • 使用 管理控制台 中定义的无答复电子邮件地址,该地址应与 Web 提交签名用户的电子邮件地址相同,例如 web-flow
  • PGP 密钥未能受到通行短语保护。1. 将密钥定义为 GitHub Enterprise Server 的环境变量,将 <YOUR-KEY-ID> 替换为 GPG 密钥 ID。
```bash copy
ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
```1. 更新 GitHub 提交签名服务的设置。
Bash
sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/gpgverify/gpgverify.hcl.ctmpl:/etc/nomad-jobs/gpgverify/gpgverify.hcl
 
sudo nomad job run /etc/nomad-jobs/gpgverify/gpgverify.hcl
```1. 运行以下命令,将 KEY-ID 替换为 PGP 密钥 ID。

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

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

  3. 将公共 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