Ubuntuに限った事かどうかはわかりませんが、Linuxを 比較的長いこと利用していると GPGエラーに遭遇することがあるんじゃないでしょうか? 少なくとも 私は 過去にも何度か経験しています。
色々と便利なソフトウェアを使うために、結構多くの Repository を 追加しています。
今回たまたまその中のひとつで GPGエラーが出たので 取り上げてみたいと思います。
GPGエラー
GPGエラーは、登録されている鍵の認証に関するエラーがある場合に表示されます。
ソフトウェアの更新の確認をするために apt update コマンドを実行して、Repositoryサーバーを確認しに行った際に問題があるとエラーとして表示されます。
ちなみに 私は 普段 コマンドをあまり使わないので もっぱら Synaptic から確認しています。
使っているのは GUIの環境ですし、Synaptic ならソフトウェアのリストも一覧確認できるので便利です。
わりと頻繁に更新があるかどうか確認しているのですが、最近になってエラー表示が出るようになりました。
GPG エラー: https://deb.torproject.org/torproject.org tor-nightly-main-focal InRelease: 以下の署名が無効です: EXPKEYSIG 74A941BA219EC810 deb.torproject.org archive signing key署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。
エラーになるとサーバーのファイルにアクセスできないため最新の情報が取得できなくなります。
ですが取得できていた時点までの情報は保持されているので利用することができます。
今回エラーが出ている tor の Repository は 以前に追加したものですが、いつのまにか認証キーが無効になってしまったようです。
普段使っているものではないので、このままにしておいても特に問題はなさそうですが毎回エラーが表示されるのも気になるので、どうにか修正したいと思います。
いきなり修正作業に取り掛かる前に
いきなり修正コマンドとか実行する前に、エラー表示にあるURL “https://deb.torproject.org/torproject.org” に該当のセクションがあるかどうかを確認します。
今回は しっかりと “https://deb.torproject.org/torproject.org/dists/tor-nightly-main-focal/” に更新ファイルが存在することが確認できましたので修正に進みます。
もしも対応するセクションがなくなっていたら、おそらく廃止になったということなので、追加した Repository を削除しましょう。
あとひとつ、 以下のコマンドを実行すると 登録している暗号鍵のリストを確認することができます。
apt-key list
このように有効期限の表示があるものについては、期限切れかどうかを確認することができます。
今回のケースは有効期限切れというわけではないようです。
pub rsa2048 2009-09-04 [SC] [有効期限: 2024-11-17]
A3C4 F0F9 79CA A22C DBA8 F512 EE8C BC9E 886D DD89
uid [ 不明 ] deb.torproject.org archive signing key
修正方法
方法 1 | 鍵情報 の 再登録 (再取得)
以下のコマンドで、鍵の情報を再登録(再取得)させます。
GPGエラーの大半はこのコマンドで解決できるようです。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [公開鍵ID]
今回のケースでは [公開鍵ID] の 部分に エラー表示に含まれていた 文字列 74A941BA219EC810 を入れて実行します。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 74A941BA219EC810
[sudo] User のパスワード:
Executing: /tmp/apt-key-gpghome.8gq8UERHU6/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 74A941BA219EC810
gpg: 鍵サーバからの受信に失敗しました: サーバが失敗を示していま
あれ?? なぜかエラーになってしまいました。
試しに接続先の キーサーバーを「keyserver.ubuntu.com」から「keys.gnupg.net」に変更して試してみます。
sudo apt-key adv --recv-keys --keyserver keys.gnupg.net 74A941BA219EC810
Executing: /tmp/apt-key-gpghome.zONiWXDprb/gpg.1.sh --recv-keys --keyserver keys.gnupg.net 74A941BA219EC810
gpg: 鍵サーバからの受信に失敗しました: サーバが失敗を示しています
結果は・・・ こちらも同じエラーで失敗です。
解決できていないのですが、とりあえずコマンドは有効だと確認できたので解決を先送りにして次に進みます。
方法 2 | 登録された鍵情報をいったん削除して再登録
以前に 方法 1 の apt-key adv を使ってもエラーを解消できない事例に遭遇しました。
その時は コマンドを実行すると「すでに keyが存在するので更新しません」といったメッセージが表示され、結局 鍵情報が変更されずに終了してしまうといったものでした。
これでは何も解決できません。
そこで、以前に登録された keyの情報をいったん削除してから 再登録をしてみたところうまくエラーが解消しました。
登録された鍵情報 の 削除方法
鍵のリスト に登録された情報を削除するには下のコマンドを実行します。
sudo apt-key del [finger print の 最後8文字]
finger print の文字列は、登録の時に用いた 公開鍵の文字列ではありません。
先に紹介した apt-key list で調べたときに表示されたものから利用します。
A3C4 F0F9 79CA A2C DBA8 F512 EE8C BC9E 886D DD89
赤色の部分(最後の8文字)をスペースなしで利用します。
もし、deb.torproject.org の 鍵情報を削除するなら以下のようにして実行します。
sudo apt-key del 886DDD89
今回は、サーバーから鍵情報の受信失敗が起きているため、実際に削除はしません。
削除してしまうと戻せなくなってしまう可能性が高いからです。
後で不要と判断できればいつでも削除は可能です。
key情報 の 再登録方法
以下の2通りのやり方があると思います。
- 方法 1 で利用した apt-key adv コマンドを利用してキーを登録する。
- Repository (PPA) を追加しなおす。
apt-key adv コマンドについては、上ですでに記述してある通りなのでそちらを参照してください。
2 の Repository (PPA) を追加しなおすには add-apt-repository コマンドを実行します。
コマンドを実行すると、Repository を登録すると同時に 必要な鍵情報の取得もおこなってくれます。
PPAの場合
sudo add-apt-repository ppa:[user]/[ppa-name]
もしくは
add-apt-repository "deb http://sample.repository/ubuntu distro component"
ほとんどのケースで 「ソフトウェア名称 + Repository / PPA」でウェブ検索すると、入力する文字列が含まれたページがヒットすると思います。
タイピングでミスするより、そちらからコピぺで拝借する方が確実で早いです。
解決の先送り
今回情報を改めて検索していて気が付いたのですが、apt-keyコマンドは Ubuntu21.10以降のバージョンでは非推奨になったそうです。
apt-key の 代わりには gnupg (gpgコマンド) を使うそうです。
まだ詳しく見ていないので間違っている可能性がありますが、大まかに以下のようになるようです。
gpgコマンド で キーリングを作成して、 signed-by によって Repository情報の紐づけを行うそうです。
実は、torproject の repository(PPA)の情報を調べたところ、gngコマンドが記載されていました。
https://www.ubuntuupdates.org/ppa/tor?dist=focalこれは勝手な推測ですが、アクセスした鍵サーバーから情報が取得できないのは、torproject が gnupg への早期切り替えを行い、旧来の apt-key の 鍵サーバーから情報を削除してしまったのではないかと思っています。
と最初は思ったのですが、上のtorprojectのページをよく見てみたら gpgコマンドで 指定している Keyサーバーが apt-key で使えるものと同じでした。 よくよく考えたら 鍵が何種類もあったらおかしなことになりますよね。 ということでますます原因がわからなくなってきました。
もう少し調べつつ試してみる必要があるので次回以降にやってみたいと思っています。
最後までありがとうございました。
今後も いろいろと調べてハマると思いますので気になったらまた見に来ていただけると嬉しいです。
それではまた!



コメント