Apa yang harus saya lakukan ketika saya mendapat pesan kesalahan KEYEXPIRED setelah pembaruan apt-get?


74

Saat memperbarui paket saya pada sistem berbasis debian oleh a

sudo apt-get update

Saya mendapat pesan kesalahan itu:

Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release: 
The following signatures were invalid: KEYEXPIRED 1138684904

Apa yang harus saya lakukan untuk memperbaikinya?

Jawaban:


117

Untuk menemukan kunci repositori yang sudah kadaluwarsa dan ID-nya, gunakan apt-keysebagai berikut:

LANG=C apt-key list | grep expired

Anda akan mendapatkan hasil yang serupa dengan yang berikut:

pub   4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]

ID kunci adalah bit setelah /ie BE1DB1F1dalam hal ini.

Untuk memperbarui kunci, jalankan

sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1

Catatan: Memperbarui kunci jelas tidak akan berfungsi jika pengelola paket belum (belum) mengunggah kunci baru. Dalam hal ini ada sedikit yang dapat Anda lakukan selain menghubungi pengelola, mengajukan bug terhadap distribusi Anda dll.

Satu liner untuk memperbarui semua kunci yang kadaluarsa: (terima kasih kepada @ryanpcmcquen)

for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done

2
itu tidak berfungsi untuk saya, setelah perintah untuk memperbarui kunci, kuncinya masih berakhir.
Karl Forner

@KarlForner telah menambahkan kunci sukses?
kynan

ya itu berhasil.
Karl Forner

4
One liner:for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
ryanpcmcquen

2
Hanya sebuah petunjuk untuk grep bagian: "kadaluwarsa" adalah i18, jadi tergantung pada pengaturan LANG * ini mungkin tidak berfungsi, misalnya untuk pengaturan pl_PL.UTF-8 kita harus mengubah "kadaluarsa" menjadi "wygasł" untuk membuat ini- kapal untuk bekerja.
Cromax

6

Anda perlu mendapatkan kunci yang lebih baru dan menambahkannya, pada saat itu apt akan mendeteksi dan tidak mengeluh. Ini seharusnya tidak terjadi secara normal, tetapi kadang-kadang terjadi. Yang benar-benar Anda butuhkan adalah mengetahui kode heks dari kunci yang perlu Anda tambahkan; setelah Anda memilikinya, cukup jauh dari sana.

Beberapa contoh:


2

Saya memiliki kesalahan yang sama, tetapi masalah ada dalam waktu sistem. Tahun itu 1961 :)

Saya mengoreksi tanggal / waktu sistem dan setelah itu dapat memperbarui tanpa pro


1

Pada Wiki Debian tentang SecureAPT , saya menemukan bahwa saya harus menghapus baris yang mengandung non-usdari /etc/apt/sources.list.

Saya benar-benar melakukan itu dan itu berhasil.


5
Ini mungkin berhasil dalam satu kasus tertentu tetapi bukan solusi umum
kynan

1

Itu mungkin juga terjadi ketika tanggal tidak benar.

Periksa tanggal dengan

date

Jika salah konfigurasi, lakukan hal berikut untuk mengatur zona waktu dan sinkronisasi otomatis tanggal Anda.

apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start

1

Salah satu penyebab yang sangat tidak mungkin, tetapi kadang-kadang mungkin, untuk kesalahan ini adalah jika telah menambahkan kunci yang sama dua kali dengan tanggal kedaluwarsa yang berbeda. Anda mungkin tahu telah melakukannya agar jawaban ini relevan bagi Anda.

Ini bisa terjadi, seperti yang terjadi pada saya, ketika hosting repositori Anda sendiri dengan kunci Anda sendiri. Jika Anda, ketika kunci akan kedaluwarsa, cukup perpanjang masa pakainya daripada mengubahnya, dan jika Anda menginstal kunci asli menggunakan preseeding tetapi kunci yang diperbarui menggunakan paket deb, maka kunci lama akan ada /etc/apt/trusted.gpg, sedangkan yang baru berakhir sebagai file terpisah di bawah /etc/apt/trusted.gpg.d/. Kunci lama akan membayangi yang baru, yang akan sepenuhnya diabaikan oleh apt-key. Hapus kunci lama dengan menjalankan gpg --keyring /etc/trusted.gpg --delete-keys <keyid>, dan kunci baru Anda akan terdeteksi.

Ini sedikit konfigurasi sudut non-standar, tapi saya harap jawaban saya dapat menyimpan beberapa kebingungan jika ada orang lain yang mengalami masalah ini karena alasan yang sama seperti yang saya lakukan.


1

Oneliner yang lebih sederhana:

for key in $(sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print $3}'); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done

Saya hanya merasa bahwa jika Anda melakukan hal-hal seperti menggunakan cutlebih dari sekali, ada alat yang lebih baik. (Juga, saya membuat ini berdasarkan pertanyaan yang berbeda .)


-1

Anda tidak perlu melakukan apa pun. Ini hanya peringatan, Anda bisa melihatnya dari W:awalan.


1
Jika dia tidak perlu melakukan apa pun, seluruh sistem Penandatanganan untuk Repos tidak akan berguna. Ini adalah fitur keamanan dan dalam lingkungan produksi, integritas utama sangat penting untuk keamanan.
Broco
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.