Signing commits with GPG をした

GitHub のヘルプ を参考に設定した。

プログラミング初心者な人に .gitconfig の設定を参考にしてもらおうと雑に渡したら user.name と email をそのまま使われてしまって、成りすましのようになってしまったことが発端。
どう防ぐのかいいか少し悩んだけど、僕の方で署名しておくのが妥当かなと思い至った。

設定したので Verified マークがついた図。 f:id:utahta:20171109235723p:plain

設定メモ

gpg コマンドインストール

$ brew install gpg

GPG key を作成

日本語だと文字化けして何を言ってるんだお前は状態になったので、英語指定してる。

$ LANG=en_US.utf-8 gpg --full-gen-key
$ gpg --list-secret-keys --keyid-format LONG
Users/utahta/.gnupg/pubring.kbx
--------------------------------
sec   rsa4096/<サインキー> 2017-11-09 [SC] [有効期限: 2019-11-07]
... 略 ...
$ gpg --armor --export <サインキー> | pbcopy

コピーした GPG key を GitHub アカウントに追加

https://github.com/settings/keys

GPG Key ID を .gitconfig に追加

家と仕事場でキーを変えてみようと思い、.gitconfig.local に設定して include するようにした。

$ vi ~/.gitconfig.local
[user]
  signingkey = <サインキー>

共用したければ export & import すれば良い。

$ gpg -o secret.key --export-secret-key <メールアドレス>
... 持ち運び ...
$ gpg --import secret.key

その他細かい設定

必要だったので追加した(ちゃんと調べてない)。

$ vi ~/.zshrc
export GPG_TTY=$(tty)

毎回 git commit -S したくない場合。

$ vi ~/.gitconfig
[commit]
  gpgsign = true

ちなみに

GPG Key 作成時に、自分の GitHub アカウントで認証していないメールアドレスを使うと Unverified になる。
f:id:utahta:20171110011130p:plain

全ての commit に署名をつけるのは悪手という話もみたけど、今回の意図とはそぐわないのでみなかったことにした。