Skip to main content

アップグレード パッケージの署名キーのローテーション

GitHub Enterprise Serverがアップグレード パッケージの署名に使用するキーを更新するときに、GitHubで GPG 公開キーをローテーションする方法について説明します。

アップグレード パッケージ署名キーについて

GitHub Enterprise Server アップグレード パッケージは GPG キーで署名されるため、管理者はパッケージが GitHubから取得されていることを確認できます。 アップグレードをインストールすると、アプライアンスは、キーリングに格納されている GPG 公開キーに対してパッケージ署名をチェックします。

場合によっては、 GitHub がこの署名キーをローテーションすることがあります。 その場合は、新しいキーで署名されたアップグレード パッケージをインストールする前に、インスタンスの GPG 公開キーを更新する必要があります。 インスタンスはキーのローテーションなしで引き続き正常に機能しますが、キーが更新されるまで、アップグレードは署名の検証に失敗します。

署名キーがローテーションされていない場合、アップグレード パッケージをインストールしようとすると、次のエラーで失敗します。

Error: The file provided is not a valid GitHub Enterprise Server package.

サポートされていないバージョンに関する考慮事項

GitHub できるだけ早くサポートされているバージョンにアップグレードすることを強くお勧めします。

3.16 より前のバージョンの GitHub Enterprise Server は、新しい GPG キーで再署名されていません。 バージョン 3.13 以前の場合は、バージョン 3.14 以降になるまで GPG 公開キーをローテーションすることはできません。 少なくとも 3.14 にアップグレードする前に GPG 公開キーをローテーションした場合は、以前の GPG 公開キーが GitHub Enterprise Server インスタンスから削除されるため、アップグレードをインストールすることはできません。

正しいアップグレード パスの決定については、 アップグレードアシスタントを使用してください。

前提条件

  • GitHub Enterprise Server インスタンスへの SSH アクセス。 詳細については、「管理シェル (SSH) にアクセスする」を参照してください。
  • インスタンスは、ローテーション スクリプトをダウンロードするために HTTPS 経由で enterprise.github.com に到達できる必要があります。 インスタンスが制限の厳しいファイアウォールの内側またはエアギャップ環境にある場合は、外部マシンからスクリプトをダウンロードし、手動でアプライアンスに転送します。

単一ノード インスタンスでの署名キーのローテーション

  1. SSH 経由で GitHub Enterprise Server インスタンスに接続します。

  2. GitHubによって提供されるローテーション スクリプトをダウンロードします。

    curl -fsSL https://enterprise.github.com/security/2026-05-24/rotate-gpg.sh -o rotate-gpg.sh
    
  3. ローテーション スクリプトを実行します。 キーは管理者アカウントとルート アカウントの両方に格納されるため、スクリプトは admin ユーザーとして 1 回、 sudo で 1 回実行する必要があります。

    chmod ug+x ./rotate-gpg.sh
    ./rotate-gpg.sh
    sudo ./rotate-gpg.sh
    
  4. ローテーションが正常に完了したことを確認します。 スクリプトを実行するたびに、新しいキーフィンガープリントを含む確認メッセージが出力されます。

HA またはクラスター トポロジでの署名キーのローテーション

高可用性またはクラスタリングを使用して構成されたインスタンスの場合は、すべてのノードでキーをローテーションする必要があります。

  1. SSH 経由で HA またはクラスター インストール内の任意のノードに接続します。

  2. GitHubによって提供されるローテーション スクリプトをダウンロードします。

    curl -fsSL https://enterprise.github.com/security/2026-05-24/rotate-gpg.sh -o rotate-gpg.sh
    
  3. 次のコマンドを実行します。 ghe-cluster-each コマンドは、スクリプトをすべてのノードにコピーし、すべてのノードで実行します。

    ghe-cluster-each -- chmod ug+x ./rotate-gpg.sh
    ghe-cluster-each -- ./rotate-gpg.sh
    ghe-cluster-each -- sudo ./rotate-gpg.sh
    
  4. 各ノードで回転が正常に完了したことを確認します。

現在の署名キーの確認

インスタンスに現在インストールされている GPG 署名キーを確認するには、SSH 経由で接続して次を実行します。

gpg --list-keys --keyid-format long

出力には、キーリング内のキーのフィンガープリントが表示されます。 指紋と、 GitHub によって公開された期待される値を比較して、回転が正しく適用されたことを確認します。

キーを回転した後に想定される内容

署名キーをローテーションした後:

  • インスタンスは引き続き正常に機能します。 ユーザーのダウンタイムは必要ありません。
  • 以前にダウンロードしたアップグレード パッケージは、以前のキーで署名されていた場合、検証に失敗します。 利用可能な最新のパッチ リリースをダウンロードして、新しいキーで署名されたパッケージを取得します。
  • 公式リリース ページから GitHub Enterprise Server 更新プログラムのみをダウンロードします。 詳細については、 GitHub Enterprise Server リリースを参照してください。

キーのローテーションを元に戻す

ローテーション スクリプトは、新しいキーをインポートする前に、GPG キーリングから前のキーを削除します。 回転を元に戻す組み込みの方法はありません。

キーのローテーションを元に戻す、または失敗したアップグレードからの回復に関するサポートが必要な場合は、GitHub のサポートにお問い合わせください