Вы будете время от времени обслуживать свою систему и обновлять установленные пакеты, чтобы обеспечить безопасность системы.
Недавно при обслуживании программного обеспечения на нашем сервере мы столкнулись с ошибкой „The following signatures were invalid: KEYEXPIRED 1544811256“ во время работы команды apt-get update.
Эта ошибка возникает, когда ваша система устанавливает службы из сторонних репозиториев, как мы это делали с MongoDB.
Проблема.
Вы узнаете следующий вывод лога при работе apt-get update на системе Ubuntu 16.04:
Код: Виділити все
$ sudo apt-get update
Ign:11 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 InRelease
Hit:12 https://repos.sonar.digitalocean.com/apt main InRelease
Hit:13 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release
Err:17 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release.gpg
The following signatures were invalid: KEYEXPIRED 1544811256
Fetched 1930 kB in 3s (601 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release: The following signatures were invalid: KEYEXPIRED 1544811256
W: Failed to fetch https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/3.6/Release.gpg The following signatures were invalid: KEYEXPIRED 1544811256
W: Some index files failed to download. They have been ignored, or old ones used instead.
Ключ GPG репозитория MongoDB истек на этом сервере. Чтобы решить эту проблему, вам нужно обновить ключ в вашей системе. Вот шаги, чтобы обновить истекший ключ:
Шаг 1. Найдите ключ с истекшим сроком действия
Найдите ключ с истекшим сроком действия в списке ключей apt. Вы можете запустить команду apt-key list, чтобы получить список всех установленных ключей. Используйте команду ниже, если вы хотите отфильтровать ключи с истекшим сроком действия:
Код: Виділити все
$ sudo apt-key list | grep -A 1 expired
pub 4096R/91FA4AD5 2016-12-14 [expired: 2018-12-14]
uid MongoDB 3.6 Release Signing Key <[email protected]>
Этот результирующий список показывает все пакеты с соответствующими деталями ключа. Важная часть - это ключ 91FA4AD5. Скопируйте эту часть, потому что она вам понадобится на втором этапе.
На момент написания этого руководства это 18 декабря 2018 г., а срок действия ключа истек четыре дня назад (14 декабря 2018 г.).
Шаг 2: Продлите истекший ключ
Теперь, когда вы знаете, у какого ключа истек срок действия, продлите его. Используйте следующую команду и замените <KEY> на значение вашего ключа (то, которое вы скопировали сверху):
Код: Виділити все
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys <KEY>
Код: Виділити все
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 91FA4AD5
Executing: /tmp/tmp.XC8EiRvH3E/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv-keys
91FA4AD5
gpg: requesting key 91FA4AD5 from hkp server keyserver.ubuntu.com
gpg: key 91FA4AD5: "MongoDB 3.6 Release Signing Key <[email protected]>" 1 new signature
gpg: Total number processed: 1
gpg: new signatures: 1
Отлично! Обработка ключа завершена, и ваша система получила новый ключ. Запустите команду, чтобы снова найти устаревшие ключи и убедиться, что список пуст.
Шаг 3. Повторно запустите обновление.
Теперь повторно запустите apt-get update команду для обновления ваших репозиториев
Код: Виділити все
$ sudo apt-get update