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 コマンド ライン ツールをインストールする方法は次のとおりです。

brew install gnupg

既存の GPG キーの確認

GPG キーをすでに持っているかどうかが不明な場合、既存の GPG キーをローカルで確認できます。

既存の GPG キーを持っているかどうかの確認方法

  1. ターミナルで次のコマンドを使用して、自身がアクセス権を持つ GPG キーの一覧を表示します。

    gpg --list-secret-keys --keyid-format LONG
  2. 出力に GPG キーのペアがあるかどうかを確認します。

  3. GPG キーのペアがない場合新しい GPG キーを生成する必要があります。

    使用したい GPG キーが見つかった場合、それらを Bitbucket アカウントに追加する必要があります。

新しい GPG キーの生成

コミットやタグに署名するために新しい GPG キーを生成するには、GPG がインストール済みである必要があります。

新しい GPG キーの生成方法

  1. ターミナルで次のコマンドを使用して GPG キーを生成します。

    gpg --full-generate-key
  2.  プロンプトで確認される情報を提供します。

    1. ID 情報を入力します。

    2. セキュアなパスフレーズを入力します。

Bitbucket アカウントに関連付けられているメール アドレスを使用し、セキュアなパスフレーズを指定して、パスワード マネージャーに保存してください。

  1. 次のコマンドを使用して GPG キーの一覧を表示します。

    gpg --list-secret-keys --keyid-format=long
  2. Bitbucket で使用する GPG キーのフィンガープリントをコピーします。たとえば、以下の場合、GPG キーのフィンガープリントは 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6 です。

    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]
  3. 次のコマンドに GPG キーの ID をペーストし、Bitbucket に入力する公開鍵をエクスポートします。

    gpg --armor --export 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6 # Prints the GPG key ID, in ASCII armor format
  4. その出力から公開 GPG キーをコピーします。これは -----BEGIN PGP PUBLIC KEY BLOCK----- から始まり、-----END PGP PUBLIC KEY BLOCK----- で終わります。

これで、公開 GPG キーを Bitbucket アカウントに追加できるようになりました。

GPG キーを追加する

Bitbucket で GPG キーを使用するには、GPG がインストール済みで、追加対象の生成済みの GPG キーを保持している必要があります。

GPG キーの追加方法

  1. 上部のナビゲーション バーにある [設定] ⚙️ を選択します。

  2. [設定] ドロップダウン メニューから [Bitbucket 個人設定] を選択します。

  3. 左側のサイドバーで、[セキュリティ] の下にある [GPG keys (GPG キー)] を選択します。

  4. [キーを追加] ボタンを選択します。

  5. (オプション) GPG キーの名前を指定します。

  6. GPG キーをコピーします。

  7. GPG キーを [キー] フィールドに貼り付けます。

  8. [キーを追加] ボタンを選択します。

GPG キーを使用するように Git を構成

Bitbucket で GPG キーを使用するには、Git のローカル バージョンに、使用する GPG キーを構成する必要があります。

GPG キーを使用するように Git を構成する方法

  1. GPG キーの ID をコピーします。

    • GPG キーの一覧を表示するには、次のコマンドを使用します。

    gpg --list-secret-keys --keyid-format LONG

     

    Bitbucket で使用する GPG キーの ID をコピーします。たとえば、以下の場合、GPG キーの ID は 7FFFC09ACAC05FD0 です。

    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]
  2. 次のコマンドに GPG キーの ID をペーストし、Git に GPG キーを設定します。

    git config --global user.signingkey MY_KEY_ID

GPG キーを使用してコミットおよびタグに署名

Bitbucket で GPG キーを使用してコミットおよびタグに署名するには、次の条件があります。

GPG キーでコミットに署名する方法

  1. フィンガープリントまたは key_id を使って、使用するキーを Git に伝えます (例: 8F2F8C1E26E0069BC7FE7E258AEDA33EA0CA3AF6)。

    git config --global user.signingkey <KEY_ID>
  2. zsh シェルで次のコマンドを実行して、.zshrc ファイル (存在する場合) または .zprofile ファイルに GPG キーを追加します。

    if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \ else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi source ~/.zshrc && source ~/.zprofile
  3. ローカル ブランチに変更をコミットするときは、次のように git commit コマンドに -S フラグを追加します。

    git commit -S -m "your commit message"
  4. GPG キーのパスフレーズを入力します。

  5. コミットが署名されたことを確認します。

    git log --show-signature

署名検証ステータス

ステータス

結果

検証済み

  • 信頼できる作成者がコミットに署名し、署名が検証された。

未認証 ⚠️

  • コミットには GPG 署名があるが、メール アドレスが一致していないため検証が失敗する。

  • コミットの署名に使用されたキーが、Bitbucket のユーザー アカウントにアップロードされていない。

  • コミットに署名するためのキーがサポートされていないか、削除または取り消されたことが原因で無効になっている。

署名なし

  • コミットが、署名済みコミットの実装前に作成されている。

  • コミットが署名されていない。

  • コミットが Bitbucket の Web インターフェイス経由で行われている。

  • コミットはマージ戦略に基づいて行われました。

パスフレーズはキーチェーンに保存

GPG キーのパスフレーズを保存して、コミットへの署名のたびに入力する手間をなくすには、次のツールを使うことをお勧めします。

  • Mac ユーザーの場合: GPG Suite を使うことで GPG キーのパスフレーズを macOS キーチェーンに保存できます。

  • Windows ユーザーの場合: Gpg4win は他の Windows ツールと統合できます。

GPG キーのパスフレーズを保存するように gpg-agent を手動構成することもできますが、これは ssh-agent と同様に macOS キーチェーンと統合されていないため、追加のセットアップが必要です。

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。