读书人

给RPM软件包签字

发布时间: 2012-07-31 12:33:47 作者: rapoo

给RPM软件包签名
我们自己制作的软件包,为了防止被篡改,一般要使用私钥进行签名,然后将公钥广而告之,下载使用软件包的话,可以通过公钥进行验证签名,从而确保文件的原始性。
生成密钥对

首先我们要使用gpp来生成公私钥对。目前最先进的加密算法是RSA,所以我们使用RSA来生成密钥对:



对已有rpm软件包进行签名:



查看rpm数据库中已有的公钥:

引用$ rpm -q gpg-pubkey-*
gpg-pubkey-e8562897-459f07a4
gpg-pubkey-cf4c4ff9-4d5efb53
gpg-pubkey-217521f6-45e8a532

将公钥导入到RPM数据库。

引用$ sudo rpm --import RPM-GPG-KEY-OSSXP

再次查看:
引用
$ rpm -q gpg-pubkey-*
gpg-pubkey-e8562897-459f07a4
gpg-pubkey-cf4c4ff9-4d5efb53
gpg-pubkey-217521f6-45e8a532
gpg-pubkey-c0eb63c7-4da2c3e0

最后一个就是我们导入进来的公钥。

在rpm命令中使用 -K 参数进行签名验证:

引用$ rpm -K noarch/ossxp-release-0.1-2.noarch.rpm
noarch/ossxp-release-0.1-2.noarch.rpm: rsa sha1 (md5) pgp md5 OK

如果结果最后不是OK而是类似下面的:
引用
$ rpm -K noarch/ossxp-release-0.1-2.noarch.rpm
ossxp-release-0.1-2.noarch.rpm: RSA sha1 (MD5) (PGP) (MD5) (PGP) md5 NOT OK (MISSING KEYS: PGP#c0eb63c7 PGP#c0eb63c7)

那么可能是导入了不匹配的公钥或导入未遂,请重新导入正确的公钥。

有人说,这么麻烦,我不导入公钥,不验证,直接安装不行吗?当然可以,只不过在安装时会出现一个小小的警告罢了:

引用$ rpm -Uvh ossxp-release-0.1-2.noarch.rpm
warning: ossxp-release-0.1-2.noarch.rpm: Header V3 RSA/SHA1 signature: NOKEY, key ID c0eb63c7
Preparing... ########################################### [100%]
package ossxp-release-0.1-2.noarch is already installed


在YUM中验证签名

将公钥复制到系统RPM公钥目录:

引用$ sudo cp RPM-GPG-KEY-OSSXP /etc/pki/rpm-gpg/

在源配置文件中通过如下两行来指定gpg key检验:

引用gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-OSSXP

这样在通过YUM安装软件包时,当下载完毕以后会首先使用公钥进行签名验证。

读书人网 >操作系统

热点推荐