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

Linuxパッケージの署名

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

弊社では、さまざまなOSパッケージを共有するために、https://packages.gitlab.comPackagecloudインスタンスを使用しています。

このインスタンスは、さまざまな暗号学的な方法を使用して、これらのパッケージの整合性を確保しています。

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

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

現在の署名キー

キーの属性
名前GitLab B.V.
メールpackages@gitlab.com
コメントpackage repository signing key
フィンガープリントF640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
有効期限2026-02-27

このキーは2020-04-06から有効です。

このキーの有効期限は、2024-03-01から2026-02-27に延長されました。2024-03-01の有効期限が発生した場合は、以下の手順に従ってください。

パッケージクラウドはapt-keyを使用しましたが、これは非推奨ですTurnKey Linuxなど、一部のLinuxディストリビューションから手動でインストールまたは設定されたリポジトリは、Debianパッケージソースリストのsigned-byサポートをすでに使用しています。

  1. apt-keyまたはsigned-byを使用しているかどうかを判断します:

    grep 'deb \[signed-by=' /etc/apt/sources.list.d/gitlab_gitlab-?e.list

    このコマンドを実行した場合:

    • 行が返された場合は、apt-keyよりも優先されるsigned-byを使用しています。
    • 行がない場合は、apt-keyを使用しています。
  2. signed-byを使用している場合は、このスクリプトをrootとして実行して、GitLabリポジトリの公開キーを更新します:

    awk '/deb \[signed-by=/{
          pubkey = $2;
          sub(/\[signed-by=/, "", pubkey);
          sub(/\]$/, "", pubkey);
          print pubkey
        }' /etc/apt/sources.list.d/gitlab_gitlab-?e.list | \
      while read line; do
        curl -s "https://packages.gitlab.com/gpg.key" | gpg --dearmor > $line
      done
  3. apt-keyを使用している場合は、このスクリプトをrootとして実行して、GitLabリポジトリの公開キーを更新します:

    apt-key del 3F01618A51312F3F
    curl -s "https://packages.gitlab.com/gpg.key" | apt-key add -
    apt-key list 3F01618A51312F3F

YUMとDNFにはわずかな違いがありますが、基盤となる設定は同じです:

  1. リポジトリキーリングから既存のキーを削除します:

    for pubring in /var/cache/dnf/*gitlab*/pubring
    do
      gpg --homedir $pubring --delete-key F6403F6544A38863DAA0B6E03F01618A51312F3F
    done
  2. キーの確認を求めるリポジトリデータとキャッシュを更新します:

    dnf check-update

最新の署名キーをフェッチする

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

  1. キーをダウンロードします:

    curl "https://packages.gitlab.com/gpg.key" -o /tmp/omnibus_gitlab_gpg.key
  2. キーをインポートします:

    sudo apt-key add /tmp/omnibus_gitlab_gpg.key
    sudo rpm --import /tmp/omnibus_gitlab_gpg.key
  3. 新しいキーがOSによって適切に認識されるために必要な権限を持っていることを確認してください。これは644である必要があります。権限を設定するには、次を実行します:

    chmod 644 <keyfile>

前のキー

シリアル番号キー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
有効期限2026-02-14

古いパッケージ署名キー

シリアル番号キー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-82dd593d-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-ce.repo

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

    repo_gpgcheck=1
    gpgcheck=1

    または

    repo_gpgcheck=1
    pkg_gpgcheck=1

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

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

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

rpm --checksig gitlab-xxx.rpm

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

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

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

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

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 gitlab-gitlab-ee-CB947AD886C8E8FD.pub.gpg

debsig-verifyで確認する

debsig-verifyの使用方法:

  1. debsigsを設定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 gitlab-gitlab-ee-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 Tue Aug 01 22:21:11 2017 UTC
    gpg:                using RSA key DBEF89774DDB9EB37D9FC3A03CFCF9BAF27EAB47
    gpg:                issuer "support@gitlab.com"
    gpg: Good signature from "GitLab, Inc. <support@gitlab.com>" [unknown]
    Primary key fingerprint: DBEF 8977 4DDB 9EB3 7D9F  C3A0 3CFC F9BA F27E AB47

検証が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