GItHub で GPG 署名つきの commit をする
GPG 署名付きの commit をすることで、由緒正しき人物からの commit かどうかを知ることが可能になる。ゴールは下記の画像のようになる。
これをするためにやったことをメモする。このコミットはここから確認できる。
これは GitHub 公式記事の Generating a new GPG key を読みながら進めた。
環境は Mac なので gpg コマンドをインストールする必要があった。
$ brew install gpg
インストール完了後にバージョンを確認する。
$ gpg --version gpg (GnuPG) 2.2.17 ...
といった感じで表示され、今回インストールしたバージョンが 2.2.17 だと言うことがわかる。GitHub の記事から次のコマンド実行する。
$ gpg --full-generate-key
ユーザー ID を入力するところまで、鍵の長さの項目以外は default で良いので Enter
を押していく。鍵の長さは 4096 で作る。
ユーザー ID を入力するところでの名前はパブリックに公開している自分のアカウント名を入力した。メールアドレスは GitHub が コミットメッセージ用に提供している code-hex@users.noreply.github.com
とした。
進んでいくと下記のメッセージが表示されるので O
を入力する。
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)?
そうすると文字化けした謎のテキストボックスが表示され続けるのでとりあえず Enter
を叩きまくった。
完了するので gpg で作成した private key リストを確認する。
$ gpg --list-secret-keys --keyid-format LONG
実行すると ssb rsa4096/<GPG-ID> 2019-10-12 [E]
のような行が表示されるので <GPG-ID> を基にして GPG key の内容をコピーする。ちなみにこの中身は -----BEGIN PGP PUBLIC KEY BLOCK-----
で始まり -----END PGP PUBLIC KEY BLOCK-----
で終わるような内容になってる。
$ gpg --armor --export <GPG-ID> | pbcopy
これでコピーした内容を GitHub の下記のページを参考に保存する。
今度は手元の git コマンドに GPG key を使ったコミットをやっていく気持ちを設定に残す。
$ git config --global commit.gpgsign true $ git config --global user.signingkey <GPG-ID>
これで git commit -S -m '<COMMIT MSG>
等をすることで署名がついた commit をすることが可能になる。
GPG private key の管理
個人で 1password を契約してるのでここにファイルをアップロードした。
ファイルを export する方法は
$ gpg --export-secret-keys <GPG-ID> > my-private-key.asc
- 1password へアップロード
別のマシンからは
- 1password からダウンロード
$ gpg --import my-private-key.asc
$ gpg --list-secret-keys
で確認