Как узнать, с каким ключом GPG был подписан пакет RPM?

26

Криптографическая подпись RPM может быть проверена с помощью rpm -Kкоманды. Возвращает строку, содержащую gpg(или pgp) и заканчивающуюся тем OK, что подпись находится в базе данных RPM и является действительной.

Если пакет не подписан, но контрольные суммы действительны, вы все равно получите OK, но нет gpg.

Если пакет подписан, но ключ отсутствует в базе данных RPM, вы получаете (GPG)(заглавные буквы) и NOT OKAY, а затем (MISSING KEYS: GPG#deadbeef).

Это удобно, если я хочу выяснить, какой ключ я должен найти для установки моего пакета.

Но что, если я хочу проверить, какой из нескольких ключей в моем наборе ключей RPM использовался для подписи данного пакета?

mattdm
источник

Ответы:

12
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n'
Филипп Дурбин
источник
Работает, только если вы уже установили пакет, приведенное ниже решение Brightlancer позволяет проверить подпись перед установкой
Thomas
3
Это прекрасно работает даже для удаленного пакета, если вы замените -aна -p packagename.rpm.
Жаворонки
26

Поле подписи указано rpm -qpi package.rpm, например, через :

[vagrant@vm-one ~]$ rpm -qpi puppet-3.7.4-1.el6.noarch.rpm
Name        : puppet
Version     : 3.7.4
Release     : 1.el6
Architecture: noarch
Install Date: (not installed)
Group       : System Environment/Base
Size        : 6532300
License     : ASL 2.0
Signature   : RSA/SHA512, Tue 27 Jan 2015 11:17:18 PM UTC, Key ID 1054b7a24bd6ec30
Source RPM  : puppet-3.7.4-1.el6.src.rpm
Build Date  : Mon 26 Jan 2015 11:48:15 PM UTC
Build Host  : tahoe.delivery.puppetlabs.net
Relocations : (not relocatable)
Vendor      : Puppet Labs
URL         : http://puppetlabs.com
Summary     : A network tool for managing many disparate systems
Description :
Puppet lets you centrally manage every important aspect of your system using a
cross-platform specification language that manages all the separate elements
normally aggregated in different files, like users, cron jobs, and hosts,
along with obviously discrete elements like packages, services, and files.
brightlancer
источник
8

Чтобы узнать, какой ключ GPG в вашей базе данных RPM подписал конкретную частоту вращения, сделайте следующее:

Перечислите все ключи GPG в вашей базе данных RPM:

$ rpm -qa gpg-pubkey*
...
...
gpg-pubkey-b1275ea3-546d1808
...
...

Сначала убедитесь , обороты в вопросе будет подписан с ключом в вашем RPM БД:

$ rpm -K hp/mlnx-en-utils-2.2-1.0.7.0.g0055740.rhel6u4.x86_64.rpm
hp/mlnx-en-utils-2.2-1.0.7.0.g0055740.rhel6u4.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

В конце вы ищите OK, а не «НЕ OK (MISSING KEYS»), что будет означать, что оно было подписано, но ключом нет в вашей базе данных RPM.

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

А затем получите идентификатор ключа, с которым был подписан rpm:

$ rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n' -p hp/mlnx-en-utils-2.2-1.0.7.0.g0055740.rhel6u4.x86_64.rpm
mlnx-en-utils-2.2-1.0.7.0.g0055740.rhel6u4 RSA/SHA1, Tue Apr 14 12:34:51 2015, Key ID fadd8d64b1275ea3 (none)

Теперь вы можете увидеть, соответствуют ли последние 8 символов идентификатора ключа (т.е. b1275ea3 из fadd8d64b1275ea3) любому из 8 символов, следующих за gpg-pubkey- из первой команды. И в этом случае это так!

И тогда у вас есть ключ, о котором идет речь, так что сделайте:

$ rpm -qi gpg-pubkey-b1275ea3-546d1808

чтобы увидеть в этом примере, что именно ключ HP подписал этот rpm.

Надеюсь это поможет. Мне понадобилось время, чтобы понять. :-)

Seekoei
источник
5

Выдать less <rpm file>и проверить Signatureзапись, например:

[vagrant@vm-one ~]$ less artifactory-3.5.3.rpm
Name        : artifactory
Version     : 3.5.3
Release     : 30172
Architecture: noarch
Install Date: (not installed)
Group       : Development/Tools
Size        : 42286184
License     : LGPL
Signature   : (none)
Source RPM  : artifactory-3.5.3-30172.src.rpm
Build Date  : Thu 19 Mar 2015 04:47:04 PM UTC
Build Host  : artbuild2.jfrog.local
Relocations : (not relocatable)
Vendor      : JFrog Ltd.
URL         : http://www.jfrog.org
Summary     : Binary Repository Manager
Description :
The best binary repository manager around.
-rwxrwxr-x    1 root    root                     7891 Mar 19 16:47 /etc/init.d/artifactory
drwxr-xr-x    2 artifactartifact                    0 Mar 19 16:47 /etc/opt/jfrog/artifactory
-rwxrwx---    1 artifactartifact                 9855 Mar 19 16:47 /etc/opt/jfrog/artifactory/artifactory.config.xml
-rwxrwx---    1 artifactartifact                11172 Mar 19 16:47 /etc/opt/jfrog/artifactory/artifactory.system.properties
-rwxrwx---    1 artifactartifact                  457 Mar 19 16:47 /etc/opt/jfrog/artifactory/default
-rwxrwx---    1 artifactartifact                 6858 Mar 19 16:47 /etc/opt/jfrog/artifactory/logback.xml
-rwxrwx---    1 artifactartifact                 5470 Mar 19 16:47 /etc/opt/jfrog/artifactory/mimetypes.xml
drwxrwxr-x    2 root    root                        0 Mar 19 16:47 /opt/jfrog
drwxrwxr-x    2 root    root                        0 Mar 19 16:47 /opt/jfrog/artifactory/bin
-rwxrwxr-x    1 root    root                   103424 Mar 19 16:47 /opt/jfrog/artifactory/bin/artifactory-service.exe
-rwxrwxr-x    1 root    root                     1366 Mar 19 16:47 /opt/jfrog/artifactory/bin/artifactory.bat
-rwxrwxr-x    1 root    root                      457 Mar 19 16:47 /opt/jfrog/artifactory/bin/artifactory.default
artifactory-3.5.3.rpm
Sirex
источник