我想使用我的一个GPS(2)子键在Git Ie中签名提交/标签,这是我新创建的RSA4096仅签名密钥,ID为长#B0 ## ...
sec# ed25519/9F############## 2016-01-07 [expires: 2023-01-05]
Key fingerprint = FC08 HEX HEX HEX
uid [ultimate] MY NAME <MY.NAME@foo bar>
ssb rsa4096/C9############## 2016-01-07 [expires: 2022-01-05]
ssb ed25519/C6############## 2016-01-07 [expires: 2022-01-05]
ssb rsa4096/B0############## 2016-01-13 [expires: 2022-01-11]
Run Code Online (Sandbox Code Playgroud)
我正在处理一个密钥环,其中主密钥已被删除(备份)作为"更好的密钥策略"
所以,我试着为Git设置签名密钥
[user]
...
signingkey = B0##############
Run Code Online (Sandbox Code Playgroud)
但是,提交和签名失败了
> git commit -S -m "test commit"
gpg: skipped "B0##############": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
gpg-agent启动并运行的地方.
我的第一个猜测是,Git不理解长按键符号并尝试使用短符号
> gpg2 --list-secret-keys --keyid-format short
...
ssb rsa4096/DB###### 2016-01-13 [expires: 2022-01-11]
> ~/.gitconfig
[user]
...
signingkey = DB######
Run Code Online (Sandbox Code Playgroud)
但哪也失败了
> git commit -S -m "test commit short"
gpg: skipped "DB######": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
所以,我想知道在这里打破了什么,如果Git只能使用主密钥进行签名但是不理解子密钥的使用(或者如果我在某处搞砸了自己)?
Jen*_*rat 15
Git gpg默认使用,在大多数系统上都是GnuPG 1,不支持椭圆曲线加密.由于您的主键是椭圆曲线键,因此GnuPG 1根本无法使用该键.尝试将密钥与GnuPG(gpg --default-key key-id --sign)一起使用时,您将能够观察到相同的情况.
配置使用Git gpg2,至少需要GnuPG 2.1(你可以使用椭圆曲线键):
git config --global gpg.program gpg2
Run Code Online (Sandbox Code Playgroud)