2016-01-13 8 views
5

Gitのコミット/タグに私のGPS(2)サブキーを使用したい つまり、新しく作成したロングID B0 ##のRSA4096署名専用キーです...私は削除マスターキーをキーリングに取り組んでいますOpenPGPサブキーで署名コミットが失敗する

sec# ed25519/9F############## 2016-01-07 [expires: 2023-01-05] 
    Key fingerprint = FC08 HEX HEX HEX 
uid     [ultimate] MY NAME <[email protected] 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] 

(離れてバックアップさ)「より良い主要政策」など

だから、私はGitの

[user] 
    ... 
    signingkey = B0############## 
のための署名鍵を設定してみました

はしかし、コミット&署名が

> 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 

GPG-エージェント稼働で失敗します。

私の最初の推測では、Gitは長いキーの表記を理解していないということだったし、代わりに

> gpg2 --list-secret-keys --keyid-format short 
... 
ssb rsa4096/DB###### 2016-01-13 [expires: 2022-01-11] 

> ~/.gitconfig 
[user] 
    ... 
    signingkey = DB###### 

短いものを試してみましたしかし、またそう

> 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 

を失敗した、私はここに壊れるだろうかとおそらくGitだけが署名用のマスターキーで動作しますが、サブキーの使用を理解していない場合(または私がどこかで自分を台無しにした場合)

+2

は、GPG 'と' gpg2'を設定してみてください。プログラム。 GnuPG 2.0の実行に 'gpg2'を使うので、' gpg'は楕円曲線をサポートしないGnuPG 1になります。主キーが楕円曲線キーであるため、現在、大多数がシグニチャを処理できないことに注意してください。 –

+0

イェイ!それはトリックでした! 私は、EC25519があまり標準に準拠していないことを認識しています - それを使用するための少しの練習でしたが、おそらく短期間で最善の決定ではありませんでした;) – THX

答えて

15

Gitはデフォルトでgpgを使用します。これはほとんどのシステムでGnuPG 1であり、楕円曲線暗号化をサポートしていません。主キーは楕円曲線キーなので、GnuPG 1はキーをまったく使用できません。 GnuPG(gpg --default-key key-id --sign)でキーを使用しようとしているときも同じことを観察できます。 (あなたがキー楕円曲線を使用することができるよう、あなたが持っている)

設定Gitは、少なくともGnuPGの2.1であることが要求され、代わりにgpg2を使用します

git config --global gpg.program gpg2 
+0

gitでgpgエラーを解決しました。ありがとう! – Suriyaa

+0

ありがとうございます。 gpg2を使用すると、RSAキーの問題も解決しました。マスター秘密鍵が存在しないため、gitはコミットを拒否していました。 – berbt

+0

これは、GnuPG 2.1以降を使用している場合、秘密鍵を公開鍵暗号に移動したときの問題です。先行するGnuPG(1.4、2.0)はそれを見つけられません。 –

関連する問題