提交签名

可以使用任何名称和电子邮件配置 git,从而使不良行为者能够欺骗提交并冒充他们想要的任何人。 GitHub 支持多种对 git 提交进行数字签名的方法,验证它们是否来自有权访问先前配置的私钥的人。

例如,2022 年 8 月 3 日,Stephen Lacy 在 Twitter 上分享了他如何通过注意到未经验证的提交(即未经数字签名的提交)来发现 GitHub 上的大规模恶意软件攻击。

为了防止提交欺骗,我们鼓励所有 Bitwarden 贡献者对他们的提交进行数字签名。

设置提交签名

Github 支持使用 GPG、SSH 和 S/MIME 方式的提交签名。如果您不确定要使用哪种方式,我们推荐 GPG。

1、安装 GnuPG:

brew install gnupg
echo "export GPG_TTY=$(tty)" >> ~/.zshrc

重新启动打开的终端以使其生效。

2、按照 Github 文档配置提交签名

3、在下面配置您喜欢的 git 工具

4、将测试提交推送到 Github 并确保「Verified」标记出现在提交描述旁边:

命令行

配置提交签名后,您可以使用 -S 标志对提交进行签名:

git commit -S

为了避免每次都使用 -S 标志,您可以默认签署所有提交:

git config --global commit.gpgSign true 

(移除 --global 标志以仅将此设置应用于当前存储库)

Visual Studio 代码

在 Preferences -> Settings -> 搜索「commit signing」以启用提交签名。

macOS:GPG 密钥密码短语提示故障

一些 macOS 用户在使用 VS Code 时遇到问题,并且 gpg-agent 在使用 VS Code git GUI 时没有提示输入 GPG 密钥密码短语以签署提交。VS Code 显示的错误提示消息:Git: gpg failed to sign the data 表明了此故障。

此问题的解决方法是将您的 gpg-agent 配置为使用 macOS 的 pinentry 以强制安全提示。在您选择的终端中运行以下命令:

  1. brew install pinentry-mac

  2. echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf

  3. killall gpg-agent

注意:您可能需要重新启动 VS Code 才能使其生效,但现在应该会根据需要提示您输入 GPG 密钥密码短语。如果这不能解决您的问题,请按照下面的故障排除指南进行操作。

SourceTree

请参阅 Setup GPG to sign commits within SourceTree

故障排除

  • 如果您收到此错误消息「error: gpg failed to sign the data」,请确保将 export GPG_TTY=$(tty) 添加到您的 ~/.zshrc(或 ~/.bashrc,如果您使用 bash)并重新启动您的终端。有关此错误的更多帮助,请参阅此故障排除文档

最后更新于