Project Paper A4 5mm

清書したメモが置かれる

Git commitにGPGのサブキーで署名を付ける

執筆理由

日本語でTutorialMoreしか見つからんかった

ちなみに、サブキーでやる必要はぶっちゃけないと思う。セキュリティ詳しい人はどっちが良いと言うんだろうか。

概要

Git commit時にサブキーによるGPG署名を付ける。

$ git config --global user.signingkey = <keyid>!と設定する1

作業ログ

サブキーをhatsusatoさんのgpg のはなしを参考に作成。

gitにそのサブキーで署名するためkeyidを確認

$ gpg --list-secret-keys --keyid-format long
-------------------------------
sec   algo/ABCDEFGHIJKLMNOP 2006-01-02 [SC]
      ABCDEFGHIJKLMNOPQRSTUVWXYZABCD
uid                 [xx-xx-xx] John Doe <johndoe@nanashi.xxx>
ssb   algo/SUB001HOGEHOG 2016-01-02 [E] [xx-xx-xx]
ssb   algo/SUB002HOGEHOG 2006-01-02 [S] [xx-xx-xx]

署名機能が有効になっている([S]がある)SUB002HOGEHOGを使います。

git config --global user.signingkey SUB002HOGEHOG と設定すればサブキーが登録されるが……

$ git commit -m "Add nanika"
error: gpg failed to sign the data
fatal: failed to write commit object

何故かエラーを吐く。echo "test" | gpg --clearsignは問題ない(そらそうか)。

検索してStackOverFlowのこのサイト機械翻訳したものがヒットした。そこで

Solution: KEYID must be appended with ! to use a specifc subkey.

ということで、git config --global user.signingkey SUB002HOGEHOG! で登録し、再コミット

$ git commit -m "Add nanika"
[master xxxxxxx] Add nanika
~~~~

成功した。わざわざ!付けないと動かないらしい