LoginSignup
1
0

GitLab Runnerが署名の鍵の期限切れでアップデートできなかったのを解消した話

Last updated at Posted at 2024-03-15

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

以下の記事を書いたのですが、GitLab Runnerは以下の方法では更新できなかったので、Fix方法を書いておきます。

GitLabとRunnerが署名の鍵の期限切れでアップデートできなかったのを解消した話 #GitLab - Qiita
https://qiita.com/ynott/items/930558bdb5456746f40c

1. Runnerの署名エラー

GitLab Runnerで apt updateすると以下のようなエラーが出ます。

$ sudo apt update
[sudo] password for user:
取得:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
取得:4 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
ヒット:1 https://packages.gitlab.com/runner/gitlab-runner/ubuntu jammy InRelease
エラー:1 https://packages.gitlab.com/runner/gitlab-runner/ubuntu jammy InRelease
  以下の署名が無効です: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>
取得:5 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,462 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main i386 Packages [587 kB]
取得:8 http://jp.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1,559 kB]
取得:9 http://jp.archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [259 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,057 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe i386 Packages [696 kB]
取得:12 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe Translation-en [239 kB]
6,196 kB  5 で取得しました (1,305 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
アップグレードできるパッケージが 8 個あります。表示するには 'apt list --upgradable' を実行してください。
W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://packages.gitlab.com/runner/gitlab-runner/ubuntu jammy InRelease: 以下の署名が無効です: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>
W: https://packages.gitlab.com/runner/gitlab-runner/ubuntu/dists/jammy/InRelease の取得に失敗しました  以下の署名が無効です: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>
W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。

2. 対応方法

以下のように対応します。

2-1. apt-key または signed-by のどちらを使用しているかどうかを確認

Ubuntuのパッケージ認証方式は、apt-keyとsigned-byの2つの方式があります。
apt-keyが古い方式でsigned-byが新しい方式です。徐々にsigned-byに切り替わっている途中かと思います。

まず、どちらを使っているか以下のコマンドで確認します。

grep 'deb \[signed-by=' /etc/apt/sources.list.d/runner_gitlab-runner.list

image.png

2-2. signed-by形式の鍵を更新する

ルート権限で以下のコマンドを実行してください。

awk '/deb \[signed-by=/{
    pubkey = $2;
    sub(/\[signed-by=/, "", pubkey);
    sub(/\]$/, "", pubkey);
    print pubkey
  }' /etc/apt/sources.list.d/runner_gitlab-runner.list | \
  while read line; do
    curl -s "https://packages.gitlab.com/gpg.key" | gpg --dearmor > $line
  done

OKとかメッセージは出ませんが、以下のコマンドでファイルの更新日が新しくなっていたらOKです。

ls -la /usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg

3. 更新できたか確認

2-2.で何も返ってきていませんでしたが、更新できていればapt updateが成功するはずです。
実行してみます。

エラーなく実行終了しました。
image.png

4. なぜ?GitLabの署名の鍵の更新方法でGitLab Runnerでは更新できなかったか。

  1. aptの/etc/apt/sources.list.d/のファイル名が違う

GitLabのsources.list.dのファイルは以下ですが、

/etc/apt/sources.list.d/gitlab_gitlab-?e.list

GitLab Runnerのファイルは、以下です。

/etc/apt/sources.list.d/runner_gitlab-runner.list

ファイル名が違うので、2-2.で実行する時のコマンドが実行できていませんでした。

4. まとめ

特になし

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0