Вопрос: Что мне делать, когда я получил сообщение об ошибке KEYEXPIRED после обновления apt-get?


При обновлении моих пакетов в системе на основе debian

sudo apt-get update

У меня есть сообщение об ошибке:

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

Что мне делать, чтобы это исправить?


63
2018-05-11 19:58


Источник




Ответы:


Чтобы найти ключи с истекшим сроком хранения и их идентификаторы, используйте apt-key следующим образом:

LANG=C apt-key list | grep expired

Вы получите результат, похожий на следующий:

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

Идентификатор ключа - бит после / то есть BE1DB1F1 в этом случае.

Чтобы обновить ключ, запустите

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

Заметка: Обновление ключа будет очевидно не работайте, если сопровождающий пакета еще не загрузил новый ключ. В этом случае вы можете сделать что-то еще, кроме как связаться с сопровождающим, подав ошибку против вашего дистрибутива и т. Д.

Один лайнер для обновления всех истекших ключей: (благодаря @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

104
2017-07-24 23:44



это не работает для меня, после команды для обновления ключа ключ все еще истек. - Karl Forner
@KarlForner добавляет ключ успешно? - kynan
да, это было успешно. - Karl Forner
Один лайнер: 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
Просто подсказка относительно grep part: «expired» - i18ned, поэтому в зависимости от настроек LANG * это может не сработать, например, для настроек pl_PL.UTF-8 нужно изменить «expired» на «wygasł», лайнер для работы. - Cromax


Вам нужно получить новый ключ и добавить его, после чего он обнаружит его и не будет жаловаться. Обычно это не происходит, но иногда это происходит. Вам действительно нужно знать шестнадцатеричный код ключа, который вам нужно добавить; как только у вас это получится, оттуда это довольно скоро.

Некоторые примеры:


6
2018-05-11 20:09





На Debian Wiki о SecureAPT, Я обнаружил, что должен удалить строку, содержащую non-us из /etc/apt/sources.list.

Я действительно это сделал, и это сработало.


2
2018-05-12 20:12



Возможно, это работало в одном конкретном случае, но не общее решение - kynan


У меня была схожая ошибка, но проблема была в системном времени. Год был в 1961 году :)

Я исправил системную дату / время и после этого мог обновиться без про


2
2018-04-03 16:25





Это может произойти и в случае неправильной даты.

Проверьте дату с

date

Если это неверно сконфигурировано, выполните следующие действия, чтобы настроить автоматическую синхронизацию времени и даты.

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

1
2018-03-24 14:43





Один из очень маловероятных, но иногда возможных, причин для этой ошибки заключается в том, что добавив один и тот же ключ дважды с разными датами истечения срока действия. Вероятно, вы знаете, что сделали так, чтобы этот ответ был для вас релевантным.

Это может произойти, как и для меня, при размещении собственного хранилища с вашими собственными ключами. Если вы, когда ключ близок к истечению срока действия, просто продлите его время жизни, а не измените его, и если вы установили оригинальный ключ, используя предварительный выбор, но обновленный ключ с использованием пакета deb, тогда старый ключ будет находиться в /etc/apt/trusted.gpg, а новый - как отдельный файл в /etc/apt/trusted.gpg.d/, Старый ключ затеняет новый, который полностью игнорируется apt-key, Удалите старый ключ, запустив gpg --keyring /etc/trusted.gpg --delete-keys <keyid>, и ваш новый ключ будет обнаружен.

Это немного нестандартная конфигурация угла, но я надеюсь, что мой ответ может свести к путанице, если кто-то еще столкнется с этой проблемой по той же причине, что и я.


1
2018-01-11 20:45





Более простой oneliner:

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

Я просто чувствую, что если вы делаете такие вещи, как использование cut не один раз, есть лучший инструмент. (Кроме того, я создал это на основе другой вопрос.)


1
2018-04-24 18:37





Вы не должен Делать что-нибудь. Это просто предупреждение, вы можете видеть, что из W: префикс.


0
2018-06-03 11:53



Если бы ему не пришлось ничего делать, вся система Подписи для РЕПО была бы бесполезной. Это функция безопасности, а в производственных средах ключевая целостность имеет решающее значение для безопасности. - Broco