Ubuntu24.04でGitLabのapt updateがEXPKEYSIGエラーになったときの対応

Ubuntu24.04上に構築しているGitLabサーバーで、パッケージ更新のためにapt updateを実行したところ、GitLab関連のリポジトリで署名エラーが発生しました。

 

今回は、実際に発生したエラー内容、原因、対応方法を整理します。

 

 

はじめに

しばらく放置していたGitLabサーバーのバージョンを上げようとした際に、いくつかつまずいたので整理しておきます。

 
「細かい理屈はいいから、今すぐエラーを消したい」という場合は、以下のコマンドをコピーして実行してください。

curl -fsSL https://packages.gitlab.com/gpgkey/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg /usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg > /dev/null && sudo apt update

 

状況としては、Ubuntu24.04上にGitLabバージョン14が稼働していたので、最新バージョン18に上げようとしていました。その際に、以下の事象が発生したのです。

 

 

■発生した事象

GitLab サーバー上で、以下のコマンドを実行しました。

sudo apt update

 

すると、Ubuntu標準リポジトリやDockerリポジトリは正常に取得できていましたが、GitLab EEとGitLab Runnerのリポジトリで以下のエラーが発生しました。

The following signatures were invalid: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>

 

対象となっていたリポジトリは以下です。

https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu
https://packages.gitlab.com/runner/gitlab-runner/ubuntu

 

エラーの内容から、GitLab の APT リポジトリ署名キーに問題があることが分かります。

 

 

■原因

原因は、APTがGitLabリポジトリの署名検証に使用しているGPG(GNU Privacy Guard)キーが古くなっていたことです。

 

GitLabのドキュメントを確認したところ、今年の2月に切れていたようです。このサーバーを構築したのが、2、3年前なので、当然古いキーを使っていたようですね。

 

APTは、外部リポジトリからパッケージ一覧を取得する際、そのリポジトリが信頼できるものかをGPGキーで検証します。

 

今回の環境では、GitLab EEとGitLab Runnerのリポジトリ定義は以下のようになっていました。

deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu/ noble main

 

deb [signed-by=/usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg] https://packages.gitlab.com/runner/gitlab-runner/ubuntu/ noble main

 

つまり、APTは以下のkeyringファイルを使って署名検証していました。

/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg
/usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg

 

最初に /etc/apt/keyrings/gitlab-keyring.asc に新しいキーを配置しましたが、リポジトリ定義ではそのファイルを参照していませんでした。

 

そのため、apt updateを再実行しても同じEXPKEYSIGエラーが発生しました。

 

 

■確認した内容

まず、GitLab関連のリポジトリ定義を確認しました。

grep -R "packages.gitlab.com" /etc/apt/sources.list.d/

 

出力結果から、GitLab EEとGitLab Runnerがそれぞれ以下のkeyringファイルを参照していることが分かりました。

/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg
/usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg

このため、実際に更新すべきなのは/etc/apt/keyrings/gitlab-keyring.ascではなく、上記2つの.gpgファイルでした。

 

 

■対応方法

GitLab EE用の古いkeyringファイルを削除し、GitLabのGPGキーを再取得して配置しました。

sudo rm -f /usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg

curl -fsSL https://packages.gitlab.com/gpgkey/gpg.key \
  | sudo gpg --dearmor -o /usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg

 

次に、GitLab Runner用のkeyringファイルも同様に更新しました。

sudo rm -f /usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg

curl -fsSL https://packages.gitlab.com/gpgkey/gpg.key \
  | sudo gpg --dearmor -o /usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg

 

ここで実行しているgpg --dearmorは、取得したGPG公開鍵をAPTが利用しやすい.gpg形式に変換するための処理です。

 

 

■対応後の確認

再度、以下を実行しました。

apt update

 

対応後は、GitLab EEとGitLab Runnerのリポジトリ情報を正常に取得できました。

Get:6 https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu noble InRelease
Get:7 https://packages.gitlab.com/runner/gitlab-runner/ubuntu noble InRelease
Get:8 https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu noble/main amd64 Packages
Get:9 https://packages.gitlab.com/runner/gitlab-runner/ubuntu noble/main amd64 Packages

 

最終的に、以下のようにエラーなく完了しました。

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded.

 

これにより、GitLab、GitLab Runnerのリポジトリ署名検証が正常に行われるようになりました。

 

 

まとめ

今回の事象は、GitLabのAPTリポジトリ署名キーが古くなっていたことにより、apt update実行時にEXPKEYSIGエラーが発生したものでした。

 

対応のポイントは、単に新しいGPGキーを取得するだけではなく、APTリポジトリ定義のsigned-byで指定されているkeyring ファイルを確認することです。

 

今回の環境では、以下の2つのファイルが実際に参照されていました。

/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg
/usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg

 

そのため、これらのkeyringファイルを最新のGitLab GPGキーで更新することで、問題を解消できました。

 

GitLabやGitLab Runnerの更新時にEXPKEYSIGが発生した場合は、まず以下のコマンドでリポジトリ定義を確認すると、原因の切り分けがしやすいです。

grep -R "packages.gitlab.com" /etc/apt/sources.list.d/

 

 

参考リンク:GitLab公式ドキュメント

 

 

↓ほかの協栄情報メンバーのGitLabについての記事を公開しています。ぜひ参考にしてみてください。
 

 
Amazon EC2を利用して、GitLabサーバを構築してみた【AWS】(齊藤弘樹)

 
GitLabサーバにRunnerをインストールしてみた(齊藤弘樹)

 

 

Last modified: 2026-05-15

Author