本文尝试摘要gpg的常用功能。
secret key/sec:主密钥,非常重要。丢失密钥,无法解密;泄漏密钥,加密无效。
secret subkey/ssb:子密钥,在不同环境中使用。由主密钥签发。
public key/pub:主公钥,明文分发。
public subkey/sub:子公钥,与子密钥对应。
S:Sign
C:Certify
E:Encrypt
brew install gnupg
## 生成主密钥
gpg --full-gen-key
## 根据提示设置:
## key size选择4096
## 生成子密钥
gpg --edit-key MyID
## 进入交互页面,输入:
## addKey
## 之后,根据提示设置
## save
## 查看公钥
gpg --list-keys
gpg -k
## `--fingerprint`指纹
## `--keyid-format`长ID
## 0x后为长ID
gpg --list-key --fingerprint --keyid-format long
## 查看私钥
gpg --list-secret-keys
gpg -K
gpg --generate-revocation -ao myRevokeFile MyID
## 备份公钥
## -a: armor
gpg -ao MyPublickKeyFile --export MyID
## 备份主密钥
## MyLongID后加!
gpg -ao MySecretKeyFile --export-secret-key MyLongID!
## 备份签名子密钥
gpg -ao MySignSubkeyFile --export-secret-subkeys MyLongID!
## 备份加密子密钥
gpg -ao MyEncryptSubkeyFile --export-secret-subkeys MyLongID!
## 导入密钥或公钥
gpg --import MyKeyFile
导入后出现There is no assurance this key belongs to the named user
警告,需要手动信任。
gpg --edit-key MyKeyID
## 进入交互页面,输入:
## trust
## 选择信任强度
## quit
## 签名和加密
## -s: signature
## -e: encrypt
gpg -se -o MyEncryptFile -r MyID MyFile
## 只加密
## --armor
gpg --armor --recipient MyID --output MyEncryptFile --encrypt MyFile
## 解密
## -d: decrypt
gpg -o MyFile -d MyEncryptFile
## 添加`MyID`
git config --global gpg.program "$(which gpg)"
git config --global user.signingkey MyID
git config --global commit.gpgsign true
## 在GitHub设定SSH and GPG keys,添加公钥
最后在https://github.com/MyGithubID.gpg
查看公钥。这是,我的公钥。
2022年05月02日