Kernel/signature/rpm
Проверка целостности RPM пакетов
Получение RPM ключей и утилит
Актуальные RPM ключи ALT Linux Team находятся в пакете alt-rpmkeys, он установится автоматически вместе с утилитами из alt-rpmkeys-utils:
# apt-get update # apt-get install -y alt-rpmkeys-utils
Проверка целостности пакета с ядром
Пример успешной проверки
Проверка, что RPM пакет подписан ALT Linux Team:
$ alt-rpmkeys-checksig kernel-image-std-def-5.15.82-alt1.x86_64.rpm ALT Sisyphus <alt-sisyphus@altlinux.org>
В случае успеха, утилита выведет кем подписан пакет (это будет email из домена altlinux.org
) и код возврата будет 0
(код успешного завершения).
Пример неуспешной проверки (чужая подпись)
На примере пакета подписанного другим дистрибутивом:
$ alt-rpmkeys-checksig gpgme-1.15.1-2.fc34.x86_64.rpm gpgme-1.15.1-2.fc34.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 45719a39: NOKEY Header SHA1 digest: OK (a16f31f5fac1f230566f97a911467a4cc408ac84) Verify signature: BAD PARAMETERS (273 0x55a0a804b1a7 1 (nil) (nil)) V4 RSA/SHA256 Signature, key ID 45719a39: NOKEY MD5 digest: OK (9a61f0ec71eb59a33d6ef08c8b95f8a1) alt-rpmkeys-checksig: gpgme-1.15.1-2.fc34.x86_64.rpm: signature verification failed
Обратите внимание на текст signature verification failed, при этом утилита вернет код неуспешного завершения (не 0
).
Пример неуспешной проверки (измененный пакет)
В случае искажения содержимого пакета. (Для примера добавим лишний байт к данным.)
$ head -1c /dev/zero >> kernel-image-std-def-5.15.82-alt1.x86_64.rpm $ alt-rpmkeys-checksig kernel-image-std-def-5.15.82-alt1.x86_64.rpm kernel-image-std-def-5.15.82-alt1.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID da2773bb: OK Header SHA1 digest: OK (ef0a801f684333573e0b5d5feb6666eb007b67de) MD5 digest:: BAD Expected(3eafda2aac88ee0adebc7d976ce8e044) != (ca048ae433df388d89bed3fe59074f4c) V4 RSA/SHA512 Signature, key ID da2773bb: BAD alt-rpmkeys-checksig: kernel-image-std-def-5.15.82-alt1.x86_64.rpm: signature verification failed
Как и в предыдущем случае текст signature verification failed и код неуспешного завершения.
Пример неуспешной проверки (отсутствие подписи)
Допустим, вы собирали пакет локально и он не подписан.
$ alt-rpmkeys-checksig example-1.0-alt1.x86_64.rpm alt-rpmkeys-checksig: example-1.0-alt1.x86_64.rpm: signature not found
В этом случае текст signature not found и код неуспешного завершения.