GitHub上でコミットにVerifiedと表示されるように署名を勝手にしてもらう
※ Zenn のスクラップに書いていたものをまとめたものです
概要
最終的に、GitHub のコミットにVerified
と表示されるようにする。
やることとしては、
- GPG キーを作成して、git でコミット時に署名するようにする
- pinentry-mac でパスフレーズを毎回入力しなくても署名できるようにする
という 2 つの手順がある。
基本的に以下を参考にした。
GPG キーを作成して、git でコミット時に署名するようにする
GPG キーを作成する
gpg をインストールする
brew install gpg
gpg キーを作成する
$ gpg --full-generate-key 1.2m 2023/10/12 PM 07:20:53
gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: ディレクトリ'/Users/tawachan/.gnupg'が作成されました
ご希望の鍵の種類を選択してください:
(1) RSA と RSA
(2) DSA と Elgamal
(3) DSA (署名のみ)
(4) RSA (署名のみ)
(9) ECC (署名と暗号化) *デフォルト
(10) ECC (署名のみ)
(14) カードに存在する鍵
あなたの選択は? 1
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (3072) 4096
要求された鍵長は4096ビット
鍵の有効期限を指定してください。
0 = 鍵は無期限
<n> = 鍵は n 日間で期限切れ
<n>w = 鍵は n 週間で期限切れ
<n>m = 鍵は n か月間で期限切れ
<n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)0
鍵は無期限です
これで正しいですか? (y/N) y
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。
本名: ***
電子メール・アドレス: ***@gmail.com
コメント:
次のユーザIDを選択しました:
"*** <***@gmail.com>"
名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
gpg: /Users/tawachan/.gnupg/trustdb.gpg: 信用データベースができました
gpg: ディレクトリ'/Users/tawachan/.gnupg/openpgp-revocs.d'が作成されました
gpg: 失効証明書を '/Users/tawachan/.gnupg/openpgp-revocs.d/******.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。
pub rsa4096 2023-10-12 [SC]
***
uid *** <***@gmail.com>
sub rsa4096 2023-10-12 [E]
この際、入力したパスフレーズは忘れないように何処かに控えておく。
作成した鍵の確認
$ gpg --list-secret-keys --keyid-format=long 1124ms 2023/10/14 PM 09:45:27
[keyboxd]
---------
sec rsa4096/088E4C4555EAE6BB 2023-10-12 [SC]
******
uid [ 究極 ] *** <***@gmail.com>
ssb rsa4096/****** 2023-10-12 [E]
鍵の ID(上の例では088E4C4555EAE6BB
)も控えておく。
git に鍵を登録する
$ git config --global user.signingkey *****(さっきのID)
特定のリポジトリだけで有効にしたい場合は、--global
を外して然るべき場所で実行する。
常に署名するように設定
$ git config --global commit.gpgsign true
環境によっては、これも実行しておいたほうがいいかもしれない。
$ git config --global gpg.program gpg
pinentry-mac でパスフレーズを毎回入力しなくても署名できるようにする
pinentry-mac をインストールする
brew install pinentry-mac
gpg-agent.conf を編集する
$ echo "pinentry-program $(which pinentry-mac)" > ~/.gnupg/gpg-agent.conf
gpg-agent を再起動する
$ gpgconf --kill gpg-agent
確認
あとは、コミットを試みれば署名できるはず。
初回だけはダイアログが出るので、パスフレーズを入力する。