正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Linuxパッケージの署名

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

当社は、https://packages.gitlab.comで提供する様々なOSパッケージを共有するためのパッケージホスティングシステムを維持しています。

このインスタンスは、これらのパッケージの整合性を確保するために様々な暗号学的なメソッドを使用しています。

パッケージリポジトリのメタデータ署名キー

APTおよびYUMリポジトリは、メタデータに署名するためにGPGキーを使用します。このキーは、インストール手順で指定されたリポジトリセットアップスクリプトによって自動的にインストールされます。

現在のリポジトリ署名キー

以下のキーは、リポジトリメタデータに署名するために使用されます。

キー属性
名前GitLab B.V.
メールpackages@gitlab.com
コメントpackage repository signing key
フィンガープリントF640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
有効期限2028-02-06
ダウンロード場所https://packages.gitlab.com/gpgkey/gpg.key
  • 2020-04-06から有効。
  • 有効期限が2024-03-01から2026-02-27に延長されました。
  • 有効期限が2026-02-27から2028-02-06に延長されました。

キーの有効期限が切れているというエラーが表示された場合、最新のリポジトリ署名キーをフェッチする必要があります。

最新のリポジトリ署名キーをフェッチする

最新のリポジトリ署名キーをフェッチするには:

  1. キーをダウンロード:

    sudo mkdir -p /etc/apt/keyrings
    sudo curl --fail --silent --show-error \
         --output /etc/apt/keyrings/gitlab-keyring.asc \
         --url "https://packages.gitlab.com/gpgkey/gpg.key"
  2. お使いのリポジトリソースファイルを更新して、キーを参照するようにします。/etc/apt/sources.list.d/gitlab_gitlab-ee.list (またはgitlab_gitlab-ce.list) を編集し、debの後に[signed-by=/etc/apt/keyrings/gitlab-keyring.asc]を追加します:

    deb [signed-by=/etc/apt/keyrings/gitlab-keyring.asc] https://packages.gitlab.com/gitlab/gitlab-ee/<os>/<codename> <codename> main
    deb-src [signed-by=/etc/apt/keyrings/gitlab-keyring.asc] https://packages.gitlab.com/gitlab/gitlab-ee/<os>/<codename> <codename> main

apt-keyの使用は非推奨となり、Debian 13で削除されました。

apt-keyを使用していて、signed-byメソッドに移行することができない場合(ソースリストファイルにsigned-byが含まれていない場合はapt-keyを使用しています)、GitLabリポジトリの公開キーを更新するために、rootとして以下を実行します:

curl -s "https://packages.gitlab.com/gpgkey/gpg.key" | apt-key add -
apt-key list 3F01618A51312F3F
  1. repo_gpgcheckがアクティブであることを確認します。

  2. 現在インストールされているキーのリストを取得し、削除します:

    rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep -i gitlab | xargs sudo rpm -e
  3. dnfキャッシュをパージします:

    sudo rm -rf /var/cache/dnf
  4. GitLabパッケージリポジトリを再度追加します。

  5. キャッシュを再構築します:

    sudo dnf makecache

以前のリポジトリ署名キー

以下のキーは、リポジトリメタデータに署名するために使用されていましたが、現在は期限切れです。

シリアル番号キーID有効期限
11A4C 919D B987 D435 9396 38B9 1421 9A96 E15E 78F42020-04-15

パッケージ署名の検証

GitLabが生成したパッケージの署名を、手動およびサポートされている場合は自動で検証できます。

現在のパッケージ署名キー

以下のキーは、リポジトリメタデータに署名するために使用されます。

キー属性
名前GitLab, Inc.
メールsupport@gitlab.com
フィンガープリント98BF DB87 FCF1 0076 416C 1E0B AD99 7ACC 82DD 593D
有効期限2028-02-16
ダウンロード場所https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey/gitlab-gitlab-ee-CB947AD886C8E8FD.pub.gpg

以前のパッケージ署名キー

シリアル番号キーID失効日有効期限ダウンロード場所
19E71 648F 3A35 EA00 CAE4 43E7 1155 1132 6BA7 34DA2025-02-142025-07-01https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey/gitlab-gitlab-ee-3D645A26AB9FBD22.pub.gpg

RPMベースのディストリビューション

RPM形式には、GPG署名機能が完全に実装されており、その形式に基づいたパッケージ管理システムと完全に統合されています。

GitLabの公開キーが存在することを確認

RPMベースのLinuxディストリビューションでパッケージを検証するには、GitLab, Inc.の公開キーがrpmキーチェーンに存在することを確認してください。例:

rpm -q gpg-pubkey-98bfdb87fcf10076416c1e0bad997acc82dd593d-67aefdd8 --qf '%{name}-%{version}-%{release} --> %{summary}'

このコマンドは以下を出力します:

  • 公開キーに関する情報。
  • キーがインストールされていないというメッセージ。例: gpg-pubkey-f27eab47-60d4a67e is not installed

キーが存在しない場合は、インポートします。例:

rpm --import https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey/gitlab-gitlab-ee-CB947AD886C8E8FD.pub.gpg

署名チェックがアクティブであるかを確認

既存のインストールでパッケージの署名チェックがアクティブであるかを確認するには、リポジトリファイルの内容を比較します:

  1. リポジトリファイルが存在するか確認します: file /etc/yum.repos.d/gitlab_gitlab-*.repo

  2. 署名チェックがアクティブであることを確認します: grep gpgcheck /etc/yum.repos.d/gitlab_gitlab-*.repo。このコマンドの出力は次のようになるはずです:

    repo_gpgcheck=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgcheck=1

    または

    repo_gpgcheck=1
    pkg_gpgcheck=1
    repo_gpgcheck=1
    pkg_gpgcheck=1

ファイルが存在しない場合、リポジトリはインストールされていません。ファイルは存在するが、出力にgpgpcheck=0と表示される場合、その値を編集して有効にする必要があります。

Linuxパッケージのrpmファイルを検証する

公開キーが存在することを確認した後、パッケージを検証します:

rpm --checksig gitlab-xxx.rpm

Debianベースのディストリビューション

Debianパッケージ形式には、パッケージに署名するための公式な方法が含まれていません。当社はdebsig標準を実装しましたが、これはよく文書化されていますが、ほとんどのディストリビューションではデフォルトで有効になっていません。

Linuxパッケージのdebファイルは、以下のいずれかの方法で検証できます:

  • 必要なdebsigsポリシーとキーリングを設定した後、debsig-verifyを使用します。
  • GnuPGで含まれている_gpgoriginファイルを手動で確認します。

debsigsを設定する

debsigsのポリシーとキーリングの設定は複雑になる可能性があるため、設定用のgitlab-debsigs.shスクリプトを提供しています。このスクリプトを使用するには、公開キーとスクリプトをダウンロードする必要があります。

curl -JLO "https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey/gitlab-gitlab-ee-CB947AD886C8E8FD.pub.gpg"
curl -JLO "https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/scripts/gitlab-debsigs.sh"
chmod +x gitlab-debsigs.sh
sudo ./gitlab-debsigs.sh CB947AD886C8E8FD.pub.gpg

debsig-verifyで検証する

debsig-verifyを使用するには:

  1. debsigsを設定します。

  2. debsig-verifyパッケージをインストールします。

  3. debsig-verifyを実行してファイルを検証します:

    debsig-verify gitlab-xxx.deb

GnuPGで検証する

debsig-verifyによってインストールされた依存関係をインストールしたくない場合は、代わりにGnuPGを使用できます:

  1. パッケージ署名公開キーをダウンロードしてインポートします:

    curl -JLO "https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey/gitlab-gitlab-ee-CB947AD886C8E8FD.pub.gpg"
    gpg --import CB947AD886C8E8FD.pub.gpg
  2. 署名ファイル_gpgoriginを抽出します:

    ar x gitlab-xxx.deb _gpgorigin
  3. 署名が内容と一致することを確認します:

    ar p gitlab-xxx.deb debian-binary control.tar.xz data.tar.xz | gpg --verify _gpgorigin -

    このコマンドの出力は次のようになります:

    gpg: Signature made Wed Feb 18 18:07:22 2026 UTC
    gpg:                using RSA key 98BFDB87FCF10076416C1E0BAD997ACC82DD593D
    gpg:                issuer "support@gitlab.com"
    gpg: Good signature from "GitLab, Inc. <support@gitlab.com>" [unknown]
    Primary key fingerprint: 98BF DB87 FCF1 0076 416C  1E0B AD99 7ACC 82DD 593D

検証がgpg: BAD signature from "GitLab, Inc. <support@gitlab.com>" [unknown]で失敗した場合は、以下を確認してください:

  • ファイル名が正しい順序で記述されていること。
  • ファイル名がアーカイブの内容と一致すること。

使用しているLinuxディストリビューションによっては、アーカイブの内容のサフィックスが異なる場合があります。これは、コマンドを適切に調整する必要があることを意味します。アーカイブの内容を確認するには、ar t gitlab-xxx.debを実行します。

例えば、Ubuntu Focal (20.04) の場合:

$ ar t gitlab-ee_17.4.2-ee.0_amd64.deb
debian-binary
control.tar.xz
data.tar.xz
_gpgorigin