飽き性の頭の中

GitHub上でコミットにVerifiedと表示されるように署名を勝手にしてもらう

GitHub上でコミットにVerifiedと表示されるように署名を勝手にしてもらう

tawachan
tawachan

※ 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

確認

あとは、コミットを試みれば署名できるはず。

初回だけはダイアログが出るので、パスフレーズを入力する。

関連記事