Comment savoir avec quelle clé GPG un package RPM a été signé?

26

La signature cryptographique d'un RPM peut être vérifiée avec la rpm -Kcommande. Cela renvoie une chaîne contenant gpg(ou pgp) et se terminant par OKsi la signature est dans la base de données de RPM et est valide.

Si le package n'est pas signé mais que les sommes de contrôle sont valides, vous obtiendrez toujours OK, mais non gpg.

Si le package est signé mais que la clé est manquante dans la base de données RPM, vous obtenez (GPG)(lettres majuscules) et NOT OKAY, suivi de (MISSING KEYS: GPG#deadbeef).

C'est pratique si je veux savoir quelle clé je devrais trouver pour installer pour que l'installation de mon package fonctionne.

Mais que faire si je veux vérifier laquelle de plusieurs clés de mon trousseau de clés RPM a été utilisée pour signer un package donné?

mattdm
la source

Réponses:

12
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n'
Philip Durbin
la source
Ne fonctionne que si vous avez déjà installé le package, la solution de Brightlancer ci-dessous vous permet de vérifier une signature avant l'installation
Thomas
3
Cela fonctionne très bien même pour un package désinstallé si vous le remplacez -apar -p packagename.rpm.
larsks
26

Un champ Signature est répertorié via rpm -qpi package.rpm, par exemple:

[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
la source
8

Pour savoir quelle clé GPG dans votre base de données RPM a signé un rpm spécifique, procédez comme suit:

Répertoriez toutes les clés GPG dans votre base de données RPM:

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

Assurez-vous d'abord que le rpm en question est signé avec une clé dans votre base de données 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

Vous recherchez le OK à la fin, et non `` PAS OK (CLÉS MANQUANTES '', ce qui signifie qu'il a été signé, mais par une clé qui ne se trouve pas dans votre base de données RPM.

Bon, donc le rpm que nous vérifions a été signé par une clé dans notre base de données RPM.

Et puis obtenez l'ID clé avec lequel le rpm a été signé:

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

Vous pouvez maintenant voir si les 8 derniers caractères de l'ID de clé (c.-à-d. B1275ea3 de fadd8d64b1275ea3) correspondent à l'un des 8 caractères suivant gpg-pubkey- de la première commande. Et dans ce cas, c'est le cas!

Et puis vous avez la clé en question, alors faites:

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

pour voir, dans cet exemple, que c'est la clé de HP qui a signé ce rpm.

J'espère que cela t'aides. Cela m'a pris un certain temps pour comprendre. :-)

Seekoei
la source
5

Émettez less <rpm file>et vérifiez l' Signatureentrée, par exemple:

[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
la source