GitHubでは、コミットやタグにGPG署名を付けることで「Verified」バッジを表示できます。
これは、そのコミットが本人によるものであることを証明する仕組みです。
今回は、GPGを使ってコミット署名を設定する方法を紹介します。
なぜコミット署名をするのか
- コミットが正しい発行者によるものと証明できる
- 改ざんやなりすまし防止になる
- GitHub上でVerifiedバッジが付き、信頼性が向上する
開発者ポートフォリオとしても見栄えが良く、採用や取引先へのアピールにもなります。
GPG署名とPGP署名の違い(実は同じ仕組み)
GitやKeyoxideの設定を見ていると、「GPG署名」や「PGP署名」という言葉が出てきます。
一見別物のようですが、実はどちらも同じ OpenPGP という規格に基づいた署名です。
呼び方 | 意味・背景 |
---|---|
PGP | Pretty Good Privacy。暗号化・署名ソフトの商標名 |
OpenPGP | PGPの仕組みを標準化したオープン規格(RFC 4880) |
GPG(GnuPG) | OpenPGPを実装したオープンソースソフト。Gitが呼び出すのはこれ。 |
Gitの「GPG署名」は、内部的にはOpenPGP署名です。
Keyoxideで使う「PGP署名」と仕組みは同じで、単に「ソフトとしてGnuPGを使っているからGPG署名と呼んでいる」だけの違いです。
結論、
- GPG署名 = GnuPGによるOpenPGP署名
- Keyoxideの証明もGitのVerifiedバッジも、同じ鍵ペアで兼用できる
- 呼び方は違っても、技術的にはほぼ同じもの
GPG鍵を作成する
ターミナルで以下を実行します。
gpg --full-generate-key
- 鍵の種類:
RSA and RSA
を選択 - 鍵長:4096ビットを推奨
- 有効期限:1年や2年などお好みで
- 名前・メール:GitHubに登録しているものと一致させる
鍵IDを確認する
gpg --list-secret-keys --keyid-format=long
出力例:
sec rsa4096/ABCD1234EFGH5678 2025-08-11 [SC] [expires: 2026-08-11]
この ABCD1234EFGH5678
の部分が鍵IDです。
公開鍵をGitHubに登録する
鍵IDを使って公開鍵を出力します。
gpg --armor --export ABCD1234EFGH5678
- 表示された文字列をコピーします。
- GitHubにログイン
- 右上プロフィールアイコン → Settings
- 左メニューの SSH and GPG keys
- New GPG key をクリック
- 先ほどコピーした公開鍵を貼り付けて保存
Gitに署名設定を追加する
git config --global user.signingkey ABCD1234EFGH5678
git config --global commit.gpgsign true
また、user.email
がGitHubに登録しているメールアドレスになっているか確認します。
git config --global user.email
コミットして確認する
git commit -S -m "Add README"
GitHub上でコミットを開くと、右上にVerifiedバッジが付いているはずです。

よくあるエラーと対処法
gpg: signing failed: No secret key
→ 鍵ID設定の間違い、またはgpg-agent
が動いていない可能性あり。bad passphrase
→ 鍵作成時に設定したパスフレーズを再入力。
まとめ
GPG署名は数十分で設定でき、開発者としての信頼性を大きく向上させます。
Verifiedバッジは小さな見た目の変化ですが、「自分のコードを保証できる」という大きな意味があります。
ぜひ導入してみてください。
コメント