コンテンツにスキップ

Gitコミット署名の設定

GitコミットにGPG署名を追加することで、コミットの信頼性を保証し、なりすましを防ぐことができます。

最新の推奨方法:1Passwordを使用

Section titled “最新の推奨方法:1Passwordを使用”

1Passwordを使用すると、SSHキーの管理とコミット署名を一元化できます。

1Password SSH Agentを使用することで、以下のメリットがあります:

  • GPGキーの安全な管理
  • Touch IDでの認証
  • 複数デバイス間での同期
Terminal window
brew install gpg
Terminal window
gpg --full-generate-key

設定例:

  • 鍵の種類: RSA and RSA (デフォルト)
  • 鍵長: 4096ビット
  • 有効期限: 0 (無期限) または適切な期間
  • 本名: あなたの名前
  • メールアドレス: GitHubに登録したメールアドレス
Terminal window
gpg --list-secret-keys --keyid-format LONG

出力例:

sec ed25519/C140C8E74841F2D3 2024-08-21 [SC]
B634E8177E1EF4C2F467F63AC140C8E74841F2D3
uid [ultimate] Your Name <your.email@example.com>
ssb cv25519/05F4022C11D3070A 2024-08-21 [E]

C140C8E74841F2D3の部分がキーIDです。

Terminal window
gpg --armor --export YOUR_KEY_ID

出力される公開鍵ブロック(-----BEGIN PGP PUBLIC KEY BLOCK-----から-----END PGP PUBLIC KEY BLOCK-----まで)をコピーします。

  1. GitHubのGPGキー設定ページにアクセス
  2. コピーした公開鍵を貼り付けて登録
Terminal window
# 署名に使用するキーを設定
git config --global user.signingkey YOUR_KEY_ID
# すべてのコミットに自動で署名
git config --global commit.gpgsign true
Terminal window
# 特定のプロジェクトでのみ署名を有効化
cd /path/to/project
git config commit.gpgsign true

.zshrcに追加:

Terminal window
# GPGターミナル設定
export GPG_TTY=$(tty)
Terminal window
git commit -S -m "コミットメッセージ"
Terminal window
# 通常通りコミット(自動で署名される)
git commit -m "コミットメッセージ"

毎回パスフレーズを入力しないようにするには:

Terminal window
# pinentry-macのインストール
brew install pinentry-mac
# 設定ファイルの作成
echo "pinentry-program $(which pinentry-mac)" > ~/.gnupg/gpg-agent.conf
# GPG Agentの再起動
gpgconf --kill gpg-agent
Terminal window
# テスト署名
echo "test" | gpg --clearsign
Terminal window
# 署名の確認
git log --show-signature
# 特定のコミットの署名確認
git verify-commit HEAD
Terminal window
# GPG Agentの再起動
gpgconf --kill gpg-agent
# 環境変数の確認
echo $GPG_TTY
Terminal window
# キーの編集モード
gpg --edit-key YOUR_KEY_ID
# 信頼レベルを最高に設定
gpg> trust
gpg> 5
gpg> y
gpg> quit

セキュリティのベストプラクティス

Section titled “セキュリティのベストプラクティス”
  1. キーの保護

    • 強力なパスフレーズを使用
    • 秘密鍵のバックアップを安全に保管
  2. 定期的な更新

    • キーの有効期限を設定
    • 定期的にキーを更新
  3. 失効証明書の作成

    Terminal window
    gpg --gen-revoke YOUR_KEY_ID > revoke.asc

    安全な場所に保管し、キーが漏洩した場合に使用

GitHubでは、署名されたコミットに「Verified」バッジが表示されます:

  • ✅ Verified: 正しく署名されたコミット
  • ⚠️ Unverified: 署名がないか検証できないコミット