安装Git之后,默认会带Git Bash,通过Git Bash可以直接访问gpg命令。
GPG支持多种加密方式,一般在Git上使用GPG是指使用RSA非对称加密。
RSA非对称加密的密钥是一对密钥,分为 公钥 (public key) 和 私钥 (private key) 。公钥用作加密,私钥用作解密。因为加密/解密用的是不同的密钥,因此称为非对称加密。
想要发送加密消息时:
- 消息的接收方将公钥发给你
- 你使用公钥加密消息
- 将加密后消息发出
- 对方收到加密后的消息,使用自己手里的与之对应的私钥解密消息
接收消息时:
- 把与自己私钥所对应的公钥发给对方
- 对方使用你给的公钥对消息加密
- 将加密后消息发出
- 你收到加密后消息,用自己手里的私钥解密消息
整个过程不存在私钥的交换,只有公钥交换。私钥是解密时使用的,交出私钥等同于交出解密消息方法。
GPG是帮助我们生成这过程中需要用到的“公钥/私钥”密钥对,以及相关管理密钥功能的程序。
生成一对密钥(一个公钥和一个私钥)
gpg --full-generate-key
列出所有密钥对
gpg --list-keys
导出公钥
以ASCII编码方式打印公钥到命令行(方便复制粘贴):
【USERNAME需要替换,USERNAME可以是一长串的ID】
gpg -a --export USERNAME
导出公钥到文件(ascii格式):
(FILEPATH 需要替换 )
gpg -a -o FILEPATH --export USERNAME
导出公钥到文件(二进制):
gpg -o FILEPATH --export USERNAME
导出私钥到文件(二进制):【私钥切勿外传】
(ascii格式添加 -a
即可)
gpg -o FILEPATH --export-secret-keys USERNAME
导入密钥
gpg --import FILEPATH
显示常用GPG命令功能
gpg --help
配置Git使用公钥检查提交签名
git config --global user.signingkey GPG-KEY-ID
一个仓库的提交使用GPG签名验证
git config commit.gpgsign true
所有仓库Git提交时使用公钥加密
git config --global commit.gpgsign true