Bagaimana cara memberi tahu kunci GPG mana yang merupakan paket RPM ditandatangani?

26

Tanda tangan kriptografis dari RPM dapat diverifikasi dengan rpm -Kperintah. Ini mengembalikan string yang berisi gpg(atau pgp) dan diakhiri OKjika tanda tangan ada di database RPM dan valid.

Jika paket tidak ditandatangani tetapi checksum valid, Anda masih akan mendapatkannya OK, tetapi tidak gpg.

Jika paket ditandatangani tetapi kunci hilang dari database RPM, Anda mendapatkan (GPG)(huruf kapital) dan NOT OKAY, diikuti oleh (MISSING KEYS: GPG#deadbeef).

Itu berguna jika saya ingin mengetahui kunci apa yang harus saya temukan untuk menginstal agar instalasi paket saya berfungsi.

Tetapi bagaimana jika saya ingin memverifikasi mana dari beberapa kunci di keyring RPM saya yang digunakan untuk menandatangani paket yang diberikan?

mattdm
sumber

Jawaban:

12
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n'
Philip Durbin
sumber
Hanya berfungsi jika Anda telah menginstal paket, solusi Brightlancer di bawah ini memungkinkan Anda untuk memeriksa tanda tangan sebelum menginstal
Thomas
3
Ini berfungsi dengan baik bahkan untuk paket yang dihapus jika Anda mengganti -adengan -p packagename.rpm.
larsks
26

Ada bidang tanda tangan yang terdaftar melalui rpm -qpi package.rpm, misalnya:

[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
sumber
8

Untuk mengetahui kunci GPG mana dalam RPM DB Anda yang menandatangani rpm tertentu, lakukan ini:

Daftar semua kunci GPG di RPM DB Anda:

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

Pertama memastikan rpm yang bersangkutan adalah ditandatangani dengan kunci dalam DB RPM Anda:

$ 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

Anda sedang mencari OK di bagian akhir, dan bukan 'TIDAK Oke (MISSING KEYS', yang artinya sudah ditandatangani, tetapi dengan kunci yang tidak ada dalam RPM DB Anda.

Benar, jadi rpm yang kami periksa telah ditandatangani oleh kunci di RPM DB kami.

Dan kemudian dapatkan ID Kunci yang ditandatangani dengan 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)

Sekarang Anda dapat melihat apakah 8 karakter terakhir dari ID Kunci (yaitu b1275ea3 dari fadd8d64b1275ea3) sesuai dengan salah satu dari 8 karakter berikut gpg-pubkey- dari perintah pertama. Dan dalam hal ini, ya!

Dan kemudian Anda memiliki kunci yang dimaksud, demikian juga:

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

untuk melihat, dalam contoh ini, bahwa kunci HP yang menandatangani rpm ini.

Semoga ini membantu. Butuh waktu beberapa saat untuk mencari tahu. :-)

Seekoei
sumber
5

Terbitkan less <rpm file>dan periksa Signatureentri, misalnya:

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