GPG キーを使ってコミットに署名する
署名済みコミットの制限事項
現時点では、GPG キー署名を使用して検証できるのは、CLI でプッシュされたコミットだけです。
GPG キーの使用
GPG キーは、信頼済みのコラボレーターの作業に署名し、それを検証するための手段です。このページでは、GPG キーを生成し、Bitbucket Cloud で使用するコミットまたはタグに署名してそれらを検証するための方法について説明します。
GPG キーについて
GPG は Git とともに使用されるコマンド ライン ツールであり、Bitbucket での作業を検証するためにコミットまたはタグを暗号化および署名します。Bitbucket で GPG キーを使用するには、ローカルで GPG キーを生成し、それを Bitbucket アカウントに追加して、Git で使用するためにセットアップする必要があります。すでに GPG キーがある場合、「Bitbucket に GPG キーを追加する」セクションに直接移動してかまいません。
GPG のインストール
GPG がインストールされていない場合、ローカルにインストールする必要があります。GnuPG Download ページで、ご利用のオペレーティング システムに対応したバイナリを入手して手動で GPG をインストールすることも、Homebrew などのパッケージ マネージャーを使用することもできます。
Homebrew を使って GPG コマンド ライン ツールをインストールする方法は次のとおりです。
1
brew install gnupg
既存の GPG キーの確認
GPG キーをすでに持っているかどうかが不明な場合、既存の GPG キーをローカルで確認できます。
既存の GPG キーを持っているかどうかの確認方法
ターミナルで次のコマンドを使用して、自身がアクセス権を持つ GPG キーの一覧を表示します。
1
gpg --list-secret-keys --keyid-format LONG
出力に GPG キーのペアがあるかどうかを確認します。
GPG キーのペアがない場合、新しい GPG キーを生成する必要があります。
使用したい GPG キーが見つかった場合、それらを Bitbucket アカウントに追加する必要があります。
新しい GPG キーの生成
コミットやタグに署名するために新しい GPG キーを生成するには、GPG がインストール済みである必要があります。
新しい GPG キーの生成方法
ターミナルで次のコマンドを使用して GPG キーを生成します。
1
gpg --full-generate-key
プロンプトで確認される情報を提供します。
ID 情報を入力します。
セキュアなパスフレーズを入力します。
Bitbucket アカウントに関連付けられているメール アドレスを使用し、セキュアなパスフレーズを指定して、パスワード マネージャーに保存してください。
次のコマンドを使用して GPG キーの一覧を表示します。
1
gpg --list-secret-keys --keyid-format=long
Bitbucket で使用する GPG キーのフィンガープリントをコピーします。たとえば、以下の場合、GPG キーのフィンガープリントは 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6 です。
1 2 3 4 5 6 7 8 9 10 11 12
gpg --list-secret-keys --keyid-format=long gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u gpg: next trustdb check due at 2025-10-24 [keyboxd] --------- sec ed25519/8AEDA33EA0CA3AF6 2024-10-24 [SC] [expires: 2025-10-24] 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6 uid [ultimate] eilen shahbaz (my bitbucket gpg key) <eshahbaz@atlassian.com> ssb cv25519/5123BDCC83E0FF13 2024-10-24 [E] [expires: 2025-10-24]
次のコマンドに GPG キーの ID をペーストし、Bitbucket に入力する公開鍵をエクスポートします。
1 2
gpg --armor --export 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6 # Prints the GPG key ID, in ASCII armor format
その出力から公開 GPG キーをコピーします。これは -----BEGIN PGP PUBLIC KEY BLOCK----- から始まり、-----END PGP PUBLIC KEY BLOCK----- で終わります。
これで、公開 GPG キーを Bitbucket アカウントに追加できるようになりました。
GPG キーを追加する
Bitbucket で GPG キーを使用するには、GPG がインストール済みで、追加対象の生成済みの GPG キーを保持している必要があります。
GPG キーの追加方法
上部のナビゲーション バーにある [設定] ⚙️ を選択します。
[設定] ドロップダウン メニューから [Bitbucket 個人設定] を選択します。
左側のサイドバーで、[セキュリティ] の下にある [GPG keys (GPG キー)] を選択します。
[キーを追加] ボタンを選択します。
(オプション) GPG キーの名前を指定します。
GPG キーをコピーします。
GPG キーを [キー] フィールドに貼り付けます。
[キーを追加] ボタンを選択します。
GPG キーを使用するように Git を構成
Bitbucket で GPG キーを使用するには、Git のローカル バージョンに、使用する GPG キーを構成する必要があります。
GPG キーを使用するように Git を構成する方法
GPG キーの ID をコピーします。
GPG キーの一覧を表示するには、次のコマンドを使用します。
1
gpg --list-secret-keys --keyid-format LONG
Bitbucket で使用する GPG キーの ID をコピーします。たとえば、以下の場合、GPG キーの ID は 7FFFC09ACAC05FD0 です。
1 2 3 4 5 6 7
gpg --list-secret-keys --keyid-format LONG /Users/bitbucketbot/.gnupg/pubring.gpg ------------------------------ sec rsa2048/7FFFC09ACAC05FD0 2017-06-02 [SC] [expires: 2019-06-02] 5538B0F643277336BA7F0E457FFFC09ACAC05FD0 uid [ultimate] BitbucketBot <bitbucket@realaddress.com> ssb rsa2048/95E8A289DFE77A84 2017-06-02 [E] [expires: 2019-06-02]
次のコマンドに GPG キーの ID をペーストし、Git に GPG キーを設定します。
1
git config --global user.signingkey MY_KEY_ID
GPG キーを使用してコミットおよびタグに署名
Bitbucket で GPG キーを使用してコミットおよびタグに署名するには、次の条件があります。
GPG キーでコミットに署名する方法
フィンガープリントまたは key_id を使って、使用するキーを Git に伝えます (例: 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6)。
1
git config --global user.signingkey <KEY_ID>
zsh シェルで次のコマンドを実行して、.zshrc ファイル (存在する場合) または .zprofile ファイルに GPG キーを追加します。
1 2 3
if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \ else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi source ~/.zshrc && source ~/.zprofile
ローカル ブランチに変更をコミットするときは、次のように git commit コマンドに -S フラグを追加します。
1
git commit -S -m "your commit message"
GPG キーのパスフレーズを入力します。
コミットが署名されたことを確認します。
1
git log --show-signature
署名検証ステータス
ステータス | 結果 |
---|---|
検証済み |
|
未認証 ⚠️ |
|
署名なし |
|
この内容はお役に立ちましたか?