655 文字
3 分
Gitコミット署名のすゝめ ~ SSH鍵と共に
2024-09-20

GitHubは​コミットと​GitHub上の​アカウントを​紐づけする​ために,​コミットのuser.nameuser.emailを​確認し,​表示している.

Commit log

もし仮に,​誰かがuser.email5618…@users.noreply.github.comを​指定して​コミットした​場合,​GitHub上では​あたかも​私が​行った​コミットかのように​表示される.

参考:

Git で​コミット作成者を​偽装する​方​法/署名付きコミットでの​対策 - Qiita

このように,いとも​簡単に​他人に​なりすませてしまう​ため,​Gitでは​コミットに​対して​署名を​する​ことで​その​操作が​間違いなく本人に​よって​実行されたと​いう​ことを​証明する​ことができる.

また,​GitHubでは​署名が​検証された​コミットに​Verifiedラベルを​付与している.

Commit with verified

先の​記事にも​ある​通り,​以前まで​この​署名は​GPG鍵を​生成し,​GitHubに​別途登録する​必要が​あった.

この​GPG鍵と​いうのが​なかなかとっつきづらく,​管理もしづらい.

「Verified付いてるのかっこいいから​やってみたい!」みたいな​軽い​ノリで​やる1には​ハードルが​高かった.

が,​2年ほど​前から​GitHubは​SSH鍵で​署名された​コミットに​対しても​検証を​行えるようになった.

SSH鍵で​あれば,​GitHubへ​Push/Pullしたりするのに​使っている​人も​多いは​ず.​これで​あれば​新たに​鍵を​生成する​こともなく,​手軽に​コミット署名を​する​ことができる.

で,​どうやんの​さ

  1. ~/.ssh/id_ed25519.pub(公開鍵)の​中身を​コピー
  2. https://github.com/settings/keysに​アクセス
  3. 適当に​タイトルを​設定,​鍵の​種類は​「Signing Key」と​して,​さっきコピーした​公開鍵を​貼り付ける
  4. Gitにも​署名の​設定を​する
git config --global gpg.format ssh # SSH鍵で署名する
git config --global user.signingkey ~/.ssh/id_ed25519.pub # 署名に使う鍵を指定
git config --global commit.gpgsign true # 常に署名を行う設定(falseの場合,commit時毎回-Sフラグが必要)

以上で​設定は​完了.​正しく​設定できていれば,​コミットに​署名が​行われ,​GitHub上で​Verifiedフラグが​付いている​ことが​確認できるは​ず.

参考記事#

Gitの​コミットに​SSH鍵で​署名して​GitHub上で​Verifiedマークを​つけよう!​ - Qiita

コミット署名の​検証に​ついて​ - GitHub Docs

Footnotes#

  1. 3年ほど前の​私.​当時の​私は​GPGへの​知識が​無く,​失効証明書を​配布せずに​主鍵を​失効させたと​いう​黒歴史が​ある.

GitHubで編集を提案