¿Cómo puedo saber con qué clave GPG se firmó un paquete RPM?

26

La firma criptográfica de un RPM se puede verificar con el rpm -Kcomando. Esto devuelve una cadena que contiene gpg(o pgp) y termina en OKsi la firma está en la base de datos de RPM y es válida.

Si el paquete no está firmado pero las sumas de verificación son válidas, igual obtendrá OK, pero no gpg.

Si el paquete está firmado pero falta la clave en la base de datos RPM, obtendrá (GPG)(letras mayúsculas) y NOT OKAY, seguido de (MISSING KEYS: GPG#deadbeef).

Eso es útil si quiero averiguar qué clave debo encontrar para instalar para que la instalación de mi paquete funcione.

Pero, ¿qué sucede si quiero verificar cuál de varias claves en mi llavero RPM se utilizó para firmar un paquete dado?

mattdm
fuente

Respuestas:

12
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n'
Philip Durbin
fuente
Solo funciona si ya ha instalado el paquete, la solución de Brightlancer a continuación le permite verificar una firma antes de la instalación
Thomas
3
Esto funciona bien incluso para un paquete desinstalado si lo reemplaza -acon -p packagename.rpm.
larsks
26

Hay un campo de Firma listado a través de rpm -qpi package.rpm, por ejemplo,:

[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.
brillante
fuente
8

Para averiguar qué clave GPG en su RPM DB firmó un rpm específico, haga esto:

Enumere todas las claves GPG en su base de datos RPM:

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

Primero asegúrese de que las rpm en cuestión estén firmadas con una clave en su RPM DB:

$ 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

Estás buscando el OK al final, y no 'NO OK (FALTAS DE CLAVES'), lo que significa que ha sido firmado, pero por una clave que no está en tu DB RPM.

Correcto, entonces las rpm que estamos verificando han sido firmadas por una clave en nuestro RPM DB.

Y luego obtenga la ID de clave con la que se firmaron las 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)

Ahora puede ver si los últimos 8 caracteres de la ID de clave (es decir, b1275ea3 de fadd8d64b1275ea3) corresponden a alguno de los 8 caracteres que siguen a gpg-pubkey- del primer comando. Y en este caso, lo hace!

Y luego tienes la clave en cuestión, así que hazlo:

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

para ver, en este ejemplo, que fue la clave de HP la que firmó estas rpm.

Espero que esto ayude. Me tomó un tiempo darme cuenta. :-)

Seekoei
fuente
5

Emita less <rpm file>y verifique la Signatureentrada, por ejemplo:

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