質問: rpmパッケージが署名されたgpgキーを確認するにはどうすればよいですか? rpmの暗号署名はrpm -kコマンドで確認できます。これは、署名がrpmのデータベースにあり有効な場合、gpg(またはpgp)を含み、okで終わる文字列を返します。パッケージは署名されていなくてもチェックサムが有効な場合、okは取得されますが、gpgは取得されません。パッケージは署名されているが、rpmデータベースからキーが欠落している場合、(gpg)(大文字)とnot okayの後に(missing keys: gpg#deadbeef)が続きます。これは、パッケージのインストールを機能させるためにインストールする必要のあるキーを特定する場合に便利です。しかし、rpmキーリング内のいくつかのキーのwhichが特定のパッケージの署名に使用されたことを確認したい場合はどうなりますか?
回答: rpm dbのどのgpgキーが特定のrpmに署名したかを確認するには、次のようにします。rpm db内のすべてのgpgキーを一覧表示します。$ rpm -qa gpg-pubkey* ... ... gpg-pubkey-b1275ea3-546d1808 ... ... まず、問題のrpm isが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 あなたは最後にokを探していますが、「not ok(missing keys)」ではありません。つまり、署名されているが、rpm dbにないキーによるものです。そうです、チェックしているrpmはrpm dbのキーで署名されています。次に、rpmが署名されたキーidを取得します。$ 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) これで、キーidの最後の8文字(つまり、fadd8d64b1275ea3のb1275ea3)が、最初のコマンドのgpg-pubkey-に続く8文字のいずれかに対応するかどうかを確認できます。そしてこの場合、それはそうです!そして、あなたは問題の鍵を持っているので、そうしてください:$ rpm -qi gpg-pubkey-b1275ea3-546d1808 この例では、このrpmに署名したのはhpのキーであることがわかります。お役に立てれば。理解するのにしばらくかかった。 :-)