Wie kann ich feststellen, mit welchem ​​GPG-Schlüssel ein RPM-Paket signiert wurde?

26

Die kryptografische Signatur eines RPM kann mit dem rpm -KBefehl überprüft werden . Dies gibt eine Zeichenfolge zurück, die gpg(oder pgp) enthält und auf endet, OKwenn sich die Signatur in der RPM-Datenbank befindet und gültig ist.

Wenn das Paket nicht signiert ist, aber die Prüfsummen gültig sind, erhalten Sie immer noch OK, aber nein gpg.

Wenn das Paket signiert ist, der Schlüssel jedoch in der RPM-Datenbank fehlt, erhalten Sie (GPG)(Großbuchstaben) und NOT OKAY, gefolgt von (MISSING KEYS: GPG#deadbeef).

Das ist praktisch, wenn ich herausfinden möchte, welchen Schlüssel ich für die Installation finden muss, damit meine Paketinstallation funktioniert.

Aber was ist, wenn ich überprüfen möchte, welcher der mehreren Schlüssel in meinem RPM-Schlüsselring zum Signieren eines bestimmten Pakets verwendet wurde?

mattdm
quelle

Antworten:

12
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n'
Philip Durbin
quelle
Funktioniert nur, wenn Sie das Paket bereits installiert haben. Mit der folgenden Brightlancer-Lösung können Sie vor der Installation eine Signatur überprüfen
Thomas,
3
Dies funktioniert gut , auch für ein nicht installierten Paket , wenn Sie ersetzen -amit -p packagename.rpm.
Larsks
26

Es gibt ein Signaturfeld, das aufgelistet wird über rpm -qpi package.rpmzB:

[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.
helllancer
quelle
8

Gehen Sie wie folgt vor, um herauszufinden, welcher GPG-Schlüssel in Ihrer RPM-Datenbank eine bestimmte Drehzahl signiert hat:

Listen Sie alle GPG-Schlüssel in Ihrer RPM-Datenbank auf:

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

Stellen Sie zunächst sicher, dass die betreffende Drehzahl mit einem Schlüssel in Ihrer RPM-Datenbank signiert ist :

$ 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

Sie suchen nach dem OK am Ende und nicht nach "NICHT OK" (FEHLENDE SCHLÜSSEL), was bedeutet, dass es signiert wurde, sondern nach einem Schlüssel, der sich nicht in Ihrer RPM-DB befindet.

Richtig, die von uns überprüfte Drehzahl wurde mit einem Schlüssel in unserer RPM-Datenbank signiert.

Und dann erhalten Sie die Schlüssel-ID, mit der die Drehzahl signiert wurde:

$ 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)

Jetzt können Sie sehen, ob die letzten 8 Zeichen der Schlüssel-ID (dh b1275ea3 von fadd8d64b1275ea3) einem der 8 Zeichen entsprechen, die gpg-pubkey- vom ersten Befehl an folgen. Und in diesem Fall schon!

Und dann haben Sie den fraglichen Schlüssel:

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

Um in diesem Beispiel zu sehen, dass es der HP-Schlüssel war, der diese Drehzahl signiert hat.

Hoffe das hilft. Ich habe eine Weile gebraucht, um es herauszufinden. :-)

Seekoei
quelle
5

Geben less <rpm file>Sie den SignatureEintrag aus und überprüfen Sie ihn , zB:

[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
quelle