关于 Web 提交签名
如果启用 Web 提交签名,GitHub Enterprise Server 将自动使用 GPG 对用户在 你的 GitHub Enterprise Server 实例 的 Web 界面上所做的提交进行签名。 由 GitHub Enterprise Server 签名的提交将具有已验证状态。 有关详细信息,请参阅“关于提交签名验证”。
可以启用 Web 提交签名,轮换用于 Web 提交签名的私钥,以及禁用 Web 提交签名。
启用 Web 提交签名
-
在管理 shell 中,创建 PGP 密钥。 记下电子邮件地址和密钥 ID。
Bash gpg --full-generate-key --pinentry-mode=loopback
gpg --full-generate-key --pinentry-mode=loopback
- 使用默认密钥类型,并且至少有
4096
位且未过期。 - 使用
web-flow
作为用户名。 如果web-flow
不可用或无法使用,请使用任何新的唯一用户名。 在本文的以下步骤中使用此用户名。 - 如果在 管理控制台 中定义了无答复电子邮件地址,请使用该电子邮件地址。 如果没有,请使用任何电子邮件地址,例如
web-flow@my-company.com
。 电子邮件地址不需要是有效的。 - PGP 密钥未能受到通行短语保护。
- 使用默认密钥类型,并且至少有
-
将密钥定义为 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}')"
ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
-
更新 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
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
-
启用 Web 提交签名。
Bash ghe-config app.github.web-commit-signing-enabled true
ghe-config app.github.web-commit-signing-enabled true
-
通过内置身份验证或外部身份验证在 你的 GitHub Enterprise Server 实例 上创建新用户。 有关详细信息,请参阅“关于身份和访问管理”。
- 用户的用户名必须与在上面的步骤 1 中创建 PGP 密钥时使用的用户名相同,例如
web-flow
。 - 用户的电子邮件地址必须与创建 PGP 密钥时所用的地址相同。
- 用户的用户名必须与在上面的步骤 1 中创建 PGP 密钥时使用的用户名相同,例如
-
运行以下命令,将 KEY-ID 替换为 PGP 密钥 ID。
Bash gpg --armor --export KEY-ID
gpg --armor --export KEY-ID
-
复制以
-----BEGIN PGP PUBLIC KEY BLOCK-----
开头并以-----END PGP PUBLIC KEY BLOCK-----
结尾的 PGP 密钥。 -
以创建用于 Web 提交签名(例如
web-flow
)的用户身份登录 GitHub Enterprise Server。 -
将公共 PGP 密钥添加到用户配置文件。 有关详细信息,请参阅“将 GPG 密钥添加到 GitHub 帐户”。
Note
不要从 GPG 密钥列表中删除其他公钥。 如果删除公钥,则使用相应私钥签名的任何提交都将不再标记为已验证。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“设置”边栏中,单击“电子邮件”。
-
在“无答复电子邮件地址”下,键入在创建 PGP 密钥时所用的同一个电子邮件地址。
Note
只有在为 你的 GitHub Enterprise Server 实例 启用了电子邮件时,才会显示“无答复电子邮件地址”字段。 有关详细信息,请参阅“配置电子邮件通知”。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
轮换用于 Web 提交签名的私钥
-
在管理 shell 中,创建 PGP 密钥。 记下电子邮件地址和密钥 ID。
Bash gpg --full-generate-key --pinentry-mode=loopback
gpg --full-generate-key --pinentry-mode=loopback
- 使用默认密钥类型,并且至少有
4096
位且未过期。 - 使用 Web 提交签名用户的用户名,例如
web-flow
。 - 使用 管理控制台 中定义的无答复电子邮件地址,该地址应与 Web 提交签名用户的电子邮件地址相同,例如
web-flow
。 - PGP 密钥未能受到通行短语保护。
- 使用默认密钥类型,并且至少有
-
将密钥定义为 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}')"
ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
-
更新 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
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
-
运行以下命令,将 KEY-ID 替换为 PGP 密钥 ID。
Bash gpg --armor --export KEY-ID
gpg --armor --export KEY-ID
-
复制以
-----BEGIN PGP PUBLIC KEY BLOCK-----
开头并以-----END PGP PUBLIC KEY BLOCK-----
结尾的 PGP 密钥。 -
以创建用于 Web 提交签名(例如
web-flow
)的用户身份登录 GitHub Enterprise Server。 -
将公共 PGP 密钥添加到用户配置文件。 有关详细信息,请参阅“将 GPG 密钥添加到 GitHub 帐户”。
Note
不要从 GPG 密钥列表中删除其他公钥。 如果删除公钥,则使用相应私钥签名的任何提交都将不再标记为已验证。
禁用 Web 提交签名
可以为 你的 GitHub Enterprise Server 实例 禁用 Web 提交签名。
-
在管理 shell 中,运行以下命令。
Bash ghe-config app.github.web-commit-signing-enabled false
ghe-config app.github.web-commit-signing-enabled false
-
应用配置。
Bash ghe-config-apply
ghe-config-apply