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 |
有効期限 | 2024-03-01 |
この鍵は2020-04-06 からアクティビティとなります。GitLab apt/yum パッケージリポジトリを設定している既存のユーザーは、apt/yum が不一致を訴えることなくこれらのリポジトリからパッケージをインストールし続けるために、この鍵を取得して信頼できるキーリングに追加する必要があります。
この鍵の有効期限は2022-03-02から2024-03-01に延長されました。2022-03-02
で期限切れの苦情があった場合は、期限延長後の鍵の更新の手順を実行して、更新された公開鍵の内容を組み込んでください。
有効期限延長後の鍵の更新
Debian ベースのディストリビューションの場合:
PackageCloud は通常apt-key
を利用していました。これは将来非推奨となる予定です。TurnKey Linuxのようないくつかのディストリビューションの手動インストールまたは設定リポジトリはすでにDebianパッケージソースリストのsigned-by
。
-
apt-key
とsigned-by
のどちらの機能を使用しているか確認してください:grep 'deb \[signed-by=' /etc/apt/sources.list.d/gitlab_gitlab-?e.list
- この
grep
が何らかの行を返す場合、signed-by
の機能を使用しています。これはapt-key
の使用よりも優先されます。 - この
grep
が行を返さない場合、apt-key
の機能を使用していることになります。
- この
-
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
-
apt-key
の場合、以下のスクリプト(root で実行)は GitLab リポジトリの公開鍵を更新します:apt-key del 3F01618A51312F3F curl -s "https://packages.gitlab.com/gpg.key" | apt-key add - apt-key list 3F01618A51312F3F
RPMベースのディストリビューションの場合:
YumとDnfには若干の違いがありますが、基本的な設定は同じです。
-
リポジトリのキーリングから既存のキーを削除します:
for pubring in /var/cache/dnf/gitlab_gitlab-?e-*/pubring do gpg --homedir $pubring --delete-key F6403F6544A38863DAA0B6E03F01618A51312F3F done
-
リポジトリのデータ/キャッシュを更新し、キーを確認します:
dnf check-update
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
前のキー
Sl.番号 | キー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-60d4a67e --qf '%{name}-%{version}-%{release} --> %{summary}'
gpg-pubkey-f27eab47-60d4a67e 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)
-
パッケージのGPGチェックを有効にします
sudo sed -i'' 's/^gpgcheck=0/gpgcheck=1/' /etc/yum.repos.d/gitlab_gitlab-ce.repo
-
パッケージ署名公開鍵を
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
-
リポジトリのキャッシュをリフレッシュするように
yum
に伝えてください。sudo yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce'
Zypper (SuSE/SLES)
-
パッケージのGPGチェックを有効にします
sudo sed -i'' 's/pkg_gpgcheck=0/pkg_gpgcheck=1/' /etc/zypp/repos.d/gitlab_gitlab-ce.repo
-
パッケージ署名公開鍵を
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
-
zypper
にリポジトリの更新と鍵のインポートを指示します。sudo zypper --gpg-auto-import-keys refresh gitlab_gitlab-ce
手動検証
公開鍵が存在することを確認したら、rpm --checksig gitlab-xxx.rpm
を使って RPM パッケージを手動で検証できます。
DEBベースのディストリビューション
DEBフォーマットには、パッケージに署名するためのデフォルトの方法が公式には含まれていません。GitLabでは、多くのディストリビューションでデフォルトでは有効になっていないものの、十分に文書化されているdebsig
。
手動検証
debsigs
で署名された DEB パッケージの手動検証は、必要なdebsigs
ポリシーとキーリングを設定した後にdebsig-verify
を使う方法と、含まれる_gpgorigin
ファイルを GnuPG で手動でチェックする方法の 2 通りがあります。
GnuPGによる手動検証
debsig-verify
パッケージには、ユーザーがインストールしたくない依存関係が多数あります。debsig-verify
や依存パッケージをインストールせずにdebsigs
ベースの署名を検証するには、ユーザーは以下の手動手順を実行します:
-
パッケージ署名公開鍵をダウンロードし、インポートします。
curl -JLO "https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg" gpg --import gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
-
署名ファイルを展開 (
_gpgorigin
)ar x gitlab-ce-xxx.deb _gpgorigin
-
署名がコンテンツと一致するか確認します。
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
を使用するには、「debsigs の設定」の手順を実行し、debsig-verify
パッケージをインストールしてください。
debsig-verify gitlab-xxx.deb