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 ~~~~
成功した。わざわざ!
付けないと動かないらしい