给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安装软件包时,当下载完毕以后会首先使用公钥进行签名验证。