[Ubuntu] apt update時に「公開鍵を利用できないため、以下の署名は検証できませんでした」

エラーメッセージ

Jenkinsを運用しているUbuntu 18.04で、sudo apt update したときのことです。

Jenkinsの更新箇所で、「公開鍵を利用できないため、以下の署名は検証できませんでした」と表示されてしまいました。(見やすいように空行をいれています)

$ sudo apt update
(省略)
無視:1 https://pkg.jenkins.io/debian-stable binary/ InRelease
取得:7 https://pkg.jenkins.io/debian-stable binary/ Release [2,044 B]
エラー:8 https://pkg.jenkins.io/debian-stable binary/ Release.gpg
  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY FCEF32E745F2C3D5

W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://pkg.jenkins.io/debian-stable binary/ Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY FCEF32E745F2C3D5

W: http://pkg.jenkins.io/debian-stable/binary/Release.gpg の取得に失敗しました  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY FCEF32E745F2C3D5

W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
Code language: plaintext (plaintext)

対応方法

NO_PUBKEYに続くFCEF32E745F2C3D5を指定して、公開鍵を追加するといいようです。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5
Executing: /tmp/apt-key-gpghome.tHWVsBdqUd/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5
gpg: 鍵FCEF32E745F2C3D5: 公開鍵"Jenkins Project <jenkinsci-board@googlegroups.com>"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1
Code language: plaintext (plaintext)

再度、sudo apt update をすると、無事完了しました。

$ sudo apt update
(省略)
取得:8 https://pkg.jenkins.io/debian-stable binary/ Release.gpg [833 B] 
(省略)
取得:12 https://pkg.jenkins.io/debian-stable binary/ Packages [17.8 kB]
18.6 kB を 2秒 で取得しました (7,490 B/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードできるパッケージが 1 個あります。表示するには 'apt list --upgradable' を実行してください。

$ apt list --upgradable 
一覧表示... 完了
jenkins/binary 2.235.3 all [2.235.2 からアップグレード可]
N: 追加バージョンが 95 件あります。表示するには '-a' スイッチを付けてください。
Code language: Pony (pony)

つづいて、sudo apt upgrade でアップグレードしました。

$ sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libllvm9
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージはアップグレードされます:
  jenkins
アップグレード: 1 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
65.0 MB のアーカイブを取得する必要があります。
この操作後に 8,192 B のディスク容量が解放されます。
続行しますか? [Y/n] Y
取得:1 https://pkg.jenkins.io/debian-stable binary/ jenkins 2.235.3 [65.0 MB]
(省略)Code language: plaintext (plaintext)

Jenkinsサーバにアクセスすると、無事、Jenkinsが最新バージョンになっていました。

もう少し掘り下げてみた

なぜNO_PUBKEY が表示されたのかな?

(A)Release情報(ハッシュ一覧)

取得:7 https://pkg.jenkins.io/debian-stable binary/ Release [2,044 B]Code language: JavaScript (javascript)

https://pkg.jenkins.io/debian-stable/binary/Release にアクセスすると、

Architectures: all
Date: Mon, 27 Jul 2020 17:16:05 +0000
Origin: jenkins.io
Suite: binary
MD5Sum:
 df63f403d90a5d6546de12a0a960eae6           102563 Packages
 1cd99377cc6b990deece8911d4dc9d80            17814 Packages.bz2
 c73a6f245841ae971020a6ba1976bd88            20099 Packages.gz
 c430aba4f332aebec0d90335b7b261ce            16970 Packages.lzma
 8a1b8da53d710fd22f33fa0895606b78               90 Release
SHA1:
 3b45f3424469cd823982511a9cd471f801100243           102563 Packages
 51a8cd6274a9cab653f48f8f20d9de09271aca0c            17814 Packages.bz2
 a278c4e7cd88cbfa6d30cbced0ec03381bbb56ce            20099 Packages.gz
 47181348b5c74b5d0fa0e9403758a7c595247979            16970 Packages.lzma
 9cde59066724dabdfb449d56a0d7fe1d2b1ff509               90 Release
SHA256:
 ff7fc301dc0fe8f1f0ec54f854ad2869642fbd6c043dbf1ec4e326c7728a25ee           102563 Packages
 6a6acdeb66e4e7b8d32d2ec448f6fe65a81b990528491e9d675d726c2fabdcda            17814 Packages.bz2
 e5ebf2b171b04efaecd82908b9d7b3aca5b9e7da92fb808927a5a9abe82b599b            20099 Packages.gz
 faae5174c4bcc25214d5c275def9efdbe0c1690bb52301df56b6fbf97a9304e6            16970 Packages.lzma
 e8e519148764d6acf225a874b30a218ed32ee526fbeec1e29e78063d1407864b               90 Release
SHA512:
 d4c629ec5b05fc3d00e2970f2f1070fd53964f23c5e0f3cece3c6cc3822fbd45bd97fb996eadf830a706ebc517eb074550e5759f654575dd6b8d5bb2f6e3ff00           102563 Packages
 7b50881fd83f7e833b567edcfe7287a5bd2812de0fd4050ccb79fd4c6301ee797d072fcf9880697f7199786ae043d87a7453d4b82d8c7d22863d7ad1d503925e            17814 Packages.bz2
 50905fa11daf08dbdc21342768674125ba60372fcb525fe744b54ea97e2e31c6d2d87272fcb77c2130ca956fd1487767f080502d3ceba615c474f8d42310d4e9            20099 Packages.gz
 075d3c17f347050cd4ba4a20e92b09e0b0abb29b4d2a9e99aed24738edc12b52b5cf8bf4f6924ca21ae3f7644cacd70b54c4838a57de8ecb9c82a130f2adb7d1            16970 Packages.lzma
 ad99df754137e520cb10431426b7249f30989e2daed831d89bef733aa6ce14805a1e0d8c95c11be12e8668058149bf60851fd91325a4112e32ac296ca61a2067               90 Release
Code language: plaintext (plaintext)

これが、2044バイトでした。

(B)署名

エラー:8 https://pkg.jenkins.io/debian-stable binary/ Release.gpg
  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY FCEF32E745F2C3D5Code language: JavaScript (javascript)

https://pkg.jenkins.io/debian-stable/binary/Release.gpg をダウンロードすると、

-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEYql1a/14DDd88kuo/O8y50Xyw9UFAl8fC9UACgkQ/O8y50Xy
w9VzbA/+LcF5suOdsX/59KthNg7bOY9Tod2aOoLkAmhYP8wYpxr3+i5jEwAMP3Qi
/oCnY1RBSbN/BdaluapGjY8HNmotF9S15dqruSwkWOTvTgYT7yA3qHt3YHWgcxxP
TxbU3r6VjwmiMqw30uYXAvjm6pfH3E7Mx0aXlHjzpXmY8JQmuxf4ZPT3os+plhcy
gmOaUNse1Cka5ItOk6eOIM1Oi74k/qBmmb14gcIbZ3TCV7djtIVCL05cKPSZMnX4
/kS2/0fpndClXq8pEVON4wfDw3loQOT1eYy7REDMXOz06+YT0wfox9tZmq30sBXX
CJxlsi4YZyx4TkJmB+3nKDLUeM75GHY9egg/W4Dxzq93aR2KYwwoI4/wAwX3xfsE
lMCsyiI/XvPGsgXvrrFn37slAt5MZJubPXZah4dsikpFDaHXeytmLtlCORY8brw1
glkG02TrSaFxwstdLNTuVv+WEfEfILhkLE7kSvw72/J3/vABJqgi+2rGFu8D1Fn/
sSRDV8GVdleJP4GK7/e4NkxC0a90eA484vom09xrsvtydPzzBD2+ZpoySsll3DEO
1Kv+NzbF9JJg5fxKff7wqqMOrs9BVWSxT3edb7WK/cuZDNKGFNHKE3RVzGRXnrxQ
gHVjiqjSRlZ3nB/YjxnNQykQQjg0nattswHSVyEnZ/kpXZP1zc8=
=eAkl
-----END PGP SIGNATURE-----Code language: plaintext (plaintext)

(A)Release情報ページ 2044バイト

登録者が自らJenkinsリポジトリの公開鍵で署名

(B)署名

(A)Release情報ページ 2044バイト

ローカルに登録されていたJenkinsリポジトリの公開鍵で署名

apt内部で作成した署名

(B)署名と違った、(B)署名を検証できなかった、ということのようです。

公開鍵

http://keyserver.ubuntu.com/pks/lookup

先頭に 0x をつけて、0xFCEF32E745F2C3D5 で検索すると、Jenkinsリポジトリの公開鍵の情報が表示されました。

pub rsa4096/62a9756bfd780c377cf24ba8fcef32e745f2c3d5 2020-03-30T13:10:17Z
	 Hash=b81ddaa6501170aebd9b9f91010417c9

uid Jenkins Project <jenkinsci-board@googlegroups.com>
sig  sig  fcef32e745f2c3d5 2020-03-30T13:10:17Z 2023-03-30T13:10:17Z ____________________ [selfsig]



sub rsa4096/34b14af8f71411c5098c5da4d9dbb52468f30bd7 2020-03-30T13:10:17Z            
sig sbind fcef32e745f2c3d5 2020-03-30T13:10:17Z ____________________ 2023-03-30T13:10:17Z []
Code language: plaintext (plaintext)

公開鍵の作成日が2020-03-30と新しいよ

Jenkinsリポジトリの公開鍵が新しくなったのね

だから、署名が違ったんだね

信頼済みの公開鍵リスト

Linux: apt-get 時の GPG error (NO_PUBKEY) の解決例
事象Linux Debianで/etc/apt/sources.listに外部のリポジトリを指定した後にapt-get updateコマンドを実行したところ、下記のGPG errorが出力されupdateできない。# apt-get upd

ローカルに登録されている信頼済みの公開鍵リストを表示すると、FCEF32E745F2C3D5 のキーがありました。

$ apt-key list
/etc/apt/trusted.gpg
--------------------
(省略)
pub   rsa4096 2020-03-30 [SC] [有効期限: 2023-03-30]
      62A9 756B FD78 0C37 7CF2  4BA8 FCEF 32E7 45F2 C3D5
uid           [  不明  ] Jenkins Project <jenkinsci-board@googlegroups.com>
sub   rsa4096 2020-03-30 [E] [有効期限: 2023-03-30]
(省略)
Code language: Bash (bash)

エラー直後のapt-key listは確認していないの?

残念、確認していないって

参考記事

apt-get update時に「公開鍵を利用できないため、以下の署名は検証できませんでした」と出た場合 - Qiita
sudo apt-get updateをしたときに2,667 kB を 1分 3秒 で取得しました (42.2 kB/s)パッケージリストを読み込んでいます... 完了W: 署名照合中にエラー…
タイトルとURLをコピーしました