Gitコミット署名の設定
GitコミットにGPG署名を追加することで、コミットの信頼性を保証し、なりすましを防ぐことができます。
最新の推奨方法:1Passwordを使用
Section titled “最新の推奨方法:1Passwordを使用”1Passwordを使用すると、SSHキーの管理とコミット署名を一元化できます。
1Password SSH Agentの設定
Section titled “1Password SSH Agentの設定”1Password SSH Agentを使用することで、以下のメリットがあります:
- GPGキーの安全な管理
- Touch IDでの認証
- 複数デバイス間での同期
従来の方法:GPGを使用
Section titled “従来の方法:GPGを使用”GPGのインストール
Section titled “GPGのインストール”brew install gpgGPGキーの生成
Section titled “GPGキーの生成”gpg --full-generate-key設定例:
- 鍵の種類: RSA and RSA (デフォルト)
- 鍵長: 4096ビット
- 有効期限: 0 (無期限) または適切な期間
- 本名: あなたの名前
- メールアドレス: GitHubに登録したメールアドレス
生成されたキーの確認
Section titled “生成されたキーの確認”gpg --list-secret-keys --keyid-format LONG出力例:
sec ed25519/C140C8E74841F2D3 2024-08-21 [SC] B634E8177E1EF4C2F467F63AC140C8E74841F2D3uid [ultimate] Your Name <your.email@example.com>ssb cv25519/05F4022C11D3070A 2024-08-21 [E]C140C8E74841F2D3の部分がキーIDです。
公開鍵のエクスポート
Section titled “公開鍵のエクスポート”gpg --armor --export YOUR_KEY_ID出力される公開鍵ブロック(-----BEGIN PGP PUBLIC KEY BLOCK-----から-----END PGP PUBLIC KEY BLOCK-----まで)をコピーします。
GitHubへの公開鍵の登録
Section titled “GitHubへの公開鍵の登録”- GitHubのGPGキー設定ページにアクセス
- コピーした公開鍵を貼り付けて登録
Gitの設定
Section titled “Gitの設定”グローバル設定
Section titled “グローバル設定”# 署名に使用するキーを設定git config --global user.signingkey YOUR_KEY_ID
# すべてのコミットに自動で署名git config --global commit.gpgsign trueプロジェクトごとの設定
Section titled “プロジェクトごとの設定”# 特定のプロジェクトでのみ署名を有効化cd /path/to/projectgit config commit.gpgsign trueGPG設定の追加
Section titled “GPG設定の追加”.zshrcに追加:
# GPGターミナル設定export GPG_TTY=$(tty)コミットの署名
Section titled “コミットの署名”手動で署名付きコミット
Section titled “手動で署名付きコミット”git commit -S -m "コミットメッセージ"自動署名が有効な場合
Section titled “自動署名が有効な場合”# 通常通りコミット(自動で署名される)git commit -m "コミットメッセージ"パスフレーズの管理
Section titled “パスフレーズの管理”pinentry-macの設定
Section titled “pinentry-macの設定”毎回パスフレーズを入力しないようにするには:
# pinentry-macのインストールbrew install pinentry-mac
# 設定ファイルの作成echo "pinentry-program $(which pinentry-mac)" > ~/.gnupg/gpg-agent.conf
# GPG Agentの再起動gpgconf --kill gpg-agentトラブルシューティング
Section titled “トラブルシューティング”署名の動作確認
Section titled “署名の動作確認”# テスト署名echo "test" | gpg --clearsignコミット署名の検証
Section titled “コミット署名の検証”# 署名の確認git log --show-signature
# 特定のコミットの署名確認git verify-commit HEAD”failed to sign the data”エラー
Section titled “”failed to sign the data”エラー”# GPG Agentの再起動gpgconf --kill gpg-agent
# 環境変数の確認echo $GPG_TTYキーの信頼レベル設定
Section titled “キーの信頼レベル設定”# キーの編集モードgpg --edit-key YOUR_KEY_ID
# 信頼レベルを最高に設定gpg> trustgpg> 5gpg> ygpg> quitセキュリティのベストプラクティス
Section titled “セキュリティのベストプラクティス”-
キーの保護
- 強力なパスフレーズを使用
- 秘密鍵のバックアップを安全に保管
-
定期的な更新
- キーの有効期限を設定
- 定期的にキーを更新
-
失効証明書の作成
Terminal window gpg --gen-revoke YOUR_KEY_ID > revoke.asc安全な場所に保管し、キーが漏洩した場合に使用
署名付きコミットの確認
Section titled “署名付きコミットの確認”GitHubでは、署名されたコミットに「Verified」バッジが表示されます:
- ✅ Verified: 正しく署名されたコミット
- ⚠️ Unverified: 署名がないか検証できないコミット