GPG 签名
· 阅读需 2 分钟
在使用命令 git tag v0.1.0 -v
时发现在展示的信息末尾包含了一句 “error: no signature found”。一检索,才发现是自己在查看 commit 标签时使用错了命令。正确应当是 git show v0.1.0
。于是捎带脚的查了下 GPG
安装 GPG
Linux
sudo apt-get install gnupg # Ubuntu/Debian
sudo yum install gnupg # CentOS/RHEL/Fedora
macOS
brew install gpg
Windows
生成 GPG 密钥
gpg --full-generate-key
- 选择 RSA 和 DSA
- 选择 1024 - 4096 位
- 选择 0 年(无限期限)
- 姓名:
- 邮箱:
其他命令
发送密钥到公网
# 发送公钥到到服务器
gpg --keyserver hkps://keys.openpgp.org --send-keys <GPG ID>
# 发送到 Ubuntu,我没有成功,我用的 👆 那个
gpg --keyserver hkps://keyserver.ubuntu.com --send-keys <GPG ID>
查看生产的 GPG 密钥
gpg --list-keys --keyid-format=long
gpg --list-signatures --keyid-format=long
gpg --list-public-keys --keyid-format=long
gpg --list-secret-keys --keyid-format=long
导出 GPG 密钥
gpg --export-secret-keys --armor <GPG ID> > private.gpg # 私钥
gpg --export --armor <GPG ID> > public.gpg # 公钥
配置 git 使用 GPG 签名
git config --global user.signingkey <GPG ID> # <GPG ID>
git config --global commit.gpgsign true # 提交时使用 GPG 签名
添加 GPG 密钥到 GitHub
gpg --list-secret-keys --keyid-format LONG
- 找到 GPG 密钥的 ID,复制下来
gpg --armor --export <GPG ID>
- 复制 GPG 公钥到 GitHub 的 GPG 密钥中
验证 GPG 密钥
gpg --keyserver hkp://keyserver.ubuntu.com --recv-
keys <GPG ID>
gpg --edit-key <GPG ID>
配置到 npm
npm config set sign-git-tag true # 提交时使用 GPG 签名
npm config set sign-git-commit true # 提交时使用 GPG 签名