Làm cách nào để biết khóa GPG mà gói RPM đã được ký với?


26

Chữ ký mã hóa của RPM có thể được xác minh bằng rpm -Klệnh. Điều này trả về một chuỗi chứa gpg(hoặc pgp) và kết thúc bằng OKchữ ký trong cơ sở dữ liệu của RPM và hợp lệ.

Nếu gói không được ký nhưng tổng kiểm tra hợp lệ, bạn vẫn sẽ nhận được OK, nhưng không gpg.

Nếu gói được ký nhưng khóa bị thiếu trong cơ sở dữ liệu RPM, bạn nhận được (GPG)(chữ in hoa) và NOT OKAY, theo sau là (MISSING KEYS: GPG#deadbeef).

Thật tiện dụng nếu tôi muốn tìm ra khóa nào tôi nên tìm để cài đặt để làm cho việc cài đặt gói của tôi hoạt động.

Nhưng điều gì sẽ xảy ra nếu tôi muốn xác minh xem một trong số các khóa trong khóa RPM của tôi đã được sử dụng để ký một gói nhất định?

Câu trả lời:


12
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n'

Chỉ hoạt động nếu bạn đã cài đặt gói, giải pháp của Brightlanc bên dưới cho phép bạn kiểm tra chữ ký trước khi cài đặt
Thomas

3
Điều này chỉ hoạt động tốt ngay cả đối với một gói đã gỡ cài đặt nếu bạn thay thế -abằng -p packagename.rpm.
larsks

26

Có một trường Chữ ký được liệt kê qua rpm -qpi package.rpm, ví dụ:

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

8

Để tìm ra khóa GPG nào trong RPM DB của bạn đã ký một vòng / phút cụ thể, hãy làm điều này:

Liệt kê tất cả các khóa GPG trong RPM DB của bạn:

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

Trước tiên, đảm bảo vòng / phút được đề cập được ký bằng một khóa trong RPM DB của bạn:

$ 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

Cuối cùng, bạn đang tìm kiếm OK, và không 'KHÔNG OK (NHIỆM VỤ KHÓA', điều đó có nghĩa là nó đã được ký, nhưng bằng một khóa không có trong RPM DB của bạn.

Đúng vậy, do đó, vòng / phút mà chúng tôi kiểm tra đã được ký bởi một khóa trong RPM DB của chúng tôi.

Và sau đó lấy ID khóa, vòng / phút đã được ký với:

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

Bây giờ bạn có thể xem liệu 8 ký tự cuối cùng của ID khóa (tức là b1275ea3 từ fadd8d64b1275ea3) có tương ứng với bất kỳ 8 ký tự nào sau gpg-pubkey- từ lệnh đầu tiên hay không. Và trong trường hợp này, nó làm!

Và sau đó bạn có chìa khóa trong câu hỏi, do đó:

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

để xem, trong ví dụ này, đó là khóa của HP đã ký vào vòng / phút này.

Hi vọng điêu nay co ich. Mất một lúc để tìm hiểu. :-)


5

Phát hành less <rpm file>và kiểm tra Signaturemục, ví dụ ,:

[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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.