omnibus-gitlab パッケージに関連する暗号の詳細

GitLabは提供する様々なOSパッケージを共有するためにpackagecloudインスタンスを使用しており、これらのパッケージの完全性を保証するために様々な暗号化方法を使用しています。 このページはこれらの方法に関する詳細を提供するためのものです。

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

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

現在のキー

キー属性
名称 GitLab B.V.
Eメール packages@gitlab.com
コメント package repository signing key
指紋 F640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
有効期限 2022-03-02

すでに GitLab の apt/yum パッケージリポジトリを設定している既存のユーザーは、apt/yum がミスマッチについて文句を言わずにこれらのリポジトリからパッケージをインストールし続けるために、この鍵を取得して信頼できるキーリングに追加する必要があります。

2020-04-06以前の新しいキーの取得

# Download the new key
curl https://gitlab-org.gitlab.io/omnibus-gitlab/gitlab_new_gpg.key -o /tmp/omnibus_gitlab_gpg.key

# Import the key
## Debian/Ubuntu/Raspbian
$ sudo apt-key add /tmp/omnibus_gitlab_gpg.key

# CentOS/OpenSUSE/SLES
$ sudo rpm --import /tmp/omnibus_gitlab_gpg.key

2020-04-06以降の新しいキーの取得

最新のリポジトリ署名鍵を取得するには、インストールページで述べたように、GitLab リポジトリを追加する際に使用したcurl コマンドを再度実行します。 新しい鍵を取得し、ユーザーのキーリングに追加します。

または、以下のコマンドを使用して手動で新しいキーを取得し、追加することもできます。

# Download the new key
curl https://packages.gitlab.com/gpg.key -o /tmp/omnibus_gitlab_gpg.key

# Import the key
## Debian/Ubuntu/Raspbian
$ sudo apt-key add /tmp/omnibus_gitlab_gpg.key

# CentOS/OpenSUSE/SLES
$ sudo rpm --import /tmp/omnibus_gitlab_gpg.key

前のキー

番号 キーID 有効期限
1 1A4C 919D B987 D435 9396 38B9 1421 9A96 E15E 78F4 2020-04-15

パッケージ署名

この文書では、GitLab で作成されたパッケージの署名を手動とサポートされている場合は自動で検証する方法を説明します。

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

RPMフォーマットにはGPG署名機能が完全に実装されているため、このフォーマットに基づくパッケージ管理システムと完全にインテグレーションされています。 検証には2つの方法があります。

GitLab公開鍵が存在することを確認します。

RPM ベースのディストリビューションでパッケージを検証するには、GitLab, Inc. の公開鍵がrpm ツールのキーチェーンにあることを確認する必要があります。

rpm -q gpg-pubkey-f27eab47-5cc36020 --qf '%{name}-%{version}-%{release} --> %{summary}\n'を実行します。これにより、公開鍵の情報、またはpackage gpg-pubkey-f27eab47 is not installedのいずれかが生成されます。 鍵が存在しない場合は、以下の手順を実行します:

rpm --import https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg

署名チェックがアクティビティかどうかの確認

既存のインストールでパッケージシグネチャチェックがアクティビティになっているかど うかを確認する最も簡単な方法は、使用中のリポジトリファイルの内容を比較することで す。

  • リポジトリファイルが存在するか確認します:file /etc/yum.repos.d/gitlab_gitlab-ce.repo
  • 署名チェックがアクティビティであることを確認:grep gpgcheck /etc/yum.repos.d/gitlab_gitlab-ce.repo が出力されるはず。

     repo_gpgcheck=1
     gpgcheck=1
    

    あるいは

     repo_gpgcheck=1
     pkg_gpgcheck=1
    

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

自動検証の有効化

rpm ツールおよび関連パッケージマネージャ (yum,zypper) は、介入することなくパッケージの自動検証を直接サポートします。署名付きパッケージが利用可能になった後に自動リポジトリ設定スクリプトを使用した場合、追加の手順は必要ありません。 署名付きパッケージがリリースされる前にインストールした場合、必要な変更を行うか、インストールページにある自動リポジトリ設定スクリプトを再実行します。

Yum (RedHat, CentOS)
  1. パッケージのGPGチェックを有効にします。

    sudo sed -i'' 's/^gpgcheck=0/gpgcheck=1/' /etc/yum.repos.d/gitlab_gitlab-ce.repo
    
  2. パッケージ署名公開鍵をgpgkey リストに追加:/etc/yum.repos.d/gitlab_gitlab-ce.repoを編集し、gpgkey を読みに変更:

    gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
            https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    
  3. リポジトリのキャッシュをリフレッシュするようyum に指示します。

    sudo yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce'
    
ザイパー(SuSE/SLES)
  1. パッケージのGPGチェックを有効にします。

    sudo sed -i'' 's/pkg_gpgcheck=0/pkg_gpgcheck=1/' /etc/zypp/repos.d/gitlab_gitlab-ce.repo
    
  2. パッケージ署名公開鍵をgpgkey リストに追加:/etc/zypp/repos.d/gitlab_gitlab-ce.repoを編集し、gpgkey を読みに変更:

    gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
            https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    
  3. zypper にリポジトリの更新とキーのインポートを指示します。

    sudo zypper --gpg-auto-import-keys refresh gitlab_gitlab-ce
    

手動検証

公開鍵が存在することが確認されれば、RPMパッケージはrpm --checksig gitlab-xxx.rpmを使って手動で検証できます。

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

DEBフォーマットには、パッケージに署名するためのデフォルトの方法が公式に含まれていません。 GitLabでは、ほとんどのディストリビューションでデフォルトでは有効になっていないものの、十分に文書化されているdebsig

手動検証

debsigs で署名された DEB パッケージの手動検証は、必要なdebsigs ポリシーとキーリングを設定した後にdebsig-verify を使う方法と、含まれている_gpgorigin ファイルを GnuPG で手動チェックする方法の 2 通りがあります。

GnuPGによる手動検証

debsig-verify パッケージには、ユーザがインストールしたくない依存関係が多数あります。debsig-verify および依存関係をインストールせずにdebsigs ベースの署名を検証するには、ユーザは以下の手動手順を実行します:

  1. パッケージ署名公開鍵をダウンロードし、インポートします。

    curl -JLO https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    gpg --import gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    
  2. 署名ファイル (_gpgorigin) を展開します。

    ar x gitlab-ce-xxx.deb _gpgorigin
    
  3. 署名がコンテンツと一致するか確認

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

最後のコマンドの出力はこのように表示されるはずです:

$ ar p gitlab-xxx.deb debian-binary control.tar.gz data.tar.gz | 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
debsigsの設定

debsigs 、ポリシーとキーリングを設定するのは複雑なので、GitLabはスクリプトによる設定方法としてgitlab-debsigs.sh

このスクリプトを使用するには、公開鍵とスクリプトをダウンロードする必要があります。

curl -JLO  https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.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-ce-3D645A26AB9FBD22.pub.gpg
で確認してください。debsig-verify

debsig-verifyを使用するには、「Configuring debsigs」の手順を実行し、debsig-verify パッケージをインストールしてください。

debsig-verify gitlab-xxx.deb