Вопрос или проблема
После обновления некоторых серверов с RHEL8 до RHEL9 с использованием утилиты Leapp после обновления появились предупреждения в dnf
и rpm
: предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
Каждый раз, когда я выполнял любую из этих команд, я получал эти предупреждения:
[root@web ~]# rpm -q kernel
предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
kernel-5.14.0-362.18.1.el9_3.x86_64
kernel-5.14.0-427.18.1.el9_4.x86_64
kernel-5.14.0-427.20.1.el9_4.x86_64
[root@web ~]# dnf repolist
предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
Обновление репозиториев управления подписками.
идентификатор репозитория имя репозитория
rhel-9-for-x86_64-appstream-rpms Red Hat Enterprise Linux 9 для x86_64 - AppStream (RPMs)
rhel-9-for-x86_64-baseos-rpms Red Hat Enterprise Linux 9 для x86_64 - BaseOS (RPMs)
Я не знаю, из какого пакета или что вызывает эту проблему. Большинство доступных решений в Интернете включает повторное включение SHA1, что по сути не является решением.
Также все пакеты помечены как el9
, за исключением некоторых пакетов gpg-pubkey
, поэтому я думаю, что ничего из RHEL9 нет.
[root@web ~]# rpm -qa | grep -v el9
предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
предупреждение: Подпись не поддерживается. Хэш-алгоритм SHA1 недоступен.
gpg-pubkey-fd431d51-4ae0493b
gpg-pubkey-a14fe591-578876fd
gpg-pubkey-d4082792-5b32db75
Как мне отследить настоящую проблему, чтобы избавиться от этих предупреждений?
Запросите все пакеты на их подпись. Любой может добавить “el9” в строку выпуска, а не только RHEL.
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n' | grep SHA1
Старые SHA1, вероятно, из репозиториев третьих сторон. RHEL и Fedora уже какое-то время используют SHA256 или лучше.
Если вы найдете что-то, убедитесь, что упаковщик осведомлён и работает над подписями, совместимыми с RHEL 9.
Удалите любые ненужные пакеты. Обходите необходимые пакеты с слабыми подписями, подписывая их сами. Скачайте, проверьте, rpmsign --resign
, добавьте в локальный репозиторий. И, конечно, этот репозиторий должен проверяться с помощью gpgcheck=1 и gpgkey. Требуется всего лишь один или два хоста с устаревшими криптографическими политиками, а не все хосты.
dnf install --setopt=tsflags=nocrypto
является плохим обходным решением, потому что вам необходимо предоставлять его каждый раз, иначе rpm выдаст ошибку. И отсутствие проверки подписи хуже, чем устаревшая проверка подписи.
Хорошо, по крайней мере на всех моих серверах это решило проблему:
rpm -e `rpm -qa | grep gpg-pubkey | xargs`
Эта команда принудительно удалит все пакеты gpg-pubkey
. И это кажется приемлемым, потому что если ключи отсутствуют, они будут переимпортированы при следующем dnf
. Я протестировал это на более чем 20 серверах, которые были обновлены с RHEL8 с помощью leapp
.
Ответ или решение
Для решения проблемы с предупреждениями «Signature not supported. Hash algorithm SHA1 not available» после обновления серверов с RHEL8 до RHEL9 с использованием утилиты Leapp, необходимо провести несколько шагов анализа и дальнейших действий.
-
Понимание проблемы:
После обновления некоторых серверов, когда вы пытаетесь выполнить командыdnf
илиrpm
, возникает предупреждение о неподдерживаемых сигнатурах, использующих алгоритм SHA1. Важно отметить, что RHEL9 переходит на более современные и безопасные алгоритмы, такие как SHA256. Таким образом, старые пакеты, подписанные SHA1, больше не принимаются системой. -
Определение источника проблемы:
Первым шагом в диагностике является проверка всех пакетов и их сигнатур. Используйте следующую команду, чтобы найти все пакеты, которые подписаны с использованием SHA1:rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n' | grep SHA1
Это поможет определить, какие именно пакеты вызывают предупреждения. Наиболее вероятными кандидатами будут старые ключи GPG (gpg-pubkey), которые могли быть установлены ранее и теперь не соответствуют требованиям новой версии RHEL.
-
Удаление устаревших ключей GPG:
Если получается, что основными источниками предупреждений являются пакетыgpg-pubkey
, вы можете их удалить. Это не вызовет проблем, так как они будут восстановлены автоматически при следующем выполнении командыdnf
. Для их удаления выполните следующую команду:rpm -e `rpm -qa | grep gpg-pubkey | xargs`
-
Проверка и восстановление:
После выполнения вышеуказанной команды, стоит проверить, что предупреждения больше не появляются. При следующем выполнении командdnf
илиrpm
вероятно, что новые ключи будут автоматически загружены и установлены. -
Мониторинг и уведомление:
Если вы используете сторонние репозитории, рекомендуется уведомить поставщиков о необходимости поддержки более современных алгоритмов подписи. Это поможет избежать повторения подобных проблем в будущем. -
Заключение:
Следуя этим рекомендациям, вы сможете устранить предупреждения, связанные с неподдерживаемыми сигнатурами и улучшить безопасность вашей системы. Всегда важно следить за обновлениями репозиториев и поддерживать актуальность используемых пакетов и их сигнатур.
Если у вас остались вопросы или требуется более детальная информация по какому-либо пункту, не стесняйтесь обращаться за помощью.