RPM包的校验主要有来源合法性验证与包的完整性验证。
数字签名:包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。
验正过程:
前提:必须有可靠机制获取到包制作者的公钥;
1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;
2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;
rpm包来源合法性及完整性检验:
在当前系统上导入包的制作者的公钥:
rpm --import /path/to/key_file
显示所有已经导入的gpg格式的公钥:
rpm -qa gpg-pubkey*
[root@CentOS6 cd]# rpm -qa gpg-pubkey*
gpg-pubkey-c105b9de-4e0fd3a3
[root@CentOS6 cd]#
显示密钥的详细信息
rpm -qi gpg-pubkey-NAME
[root@CentOS6 cd]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
Name : gpg-pubkey Relocations: (not relocatable)
Version : c105b9de Vendor: (none)
......
-----END PGP PUBLIC KEY BLOCK-----
【注意】安装过程中会自动用已经导入的的公钥,对程序包进行检验,一般无需进行手动校验。
手动检查:
rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE
选项说明:
-K :等同于 --checksig ,进行检查并显示结果;
--nodigest:不检查包完整性;
--nosignature:不检查来源合法性。
[root@CentOS6 cd]# cd Packages/
[root@CentOS6 Packages]# rpm -K zsh-4.3.10-7.el6.i686.rpm
zsh-4.3.10-7.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK
[root@CentOS6 Packages]# rpm --checksig zsh-4.3.10-7.el6.i686.rpm
zsh-4.3.10-7.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK
[root@CentOS6 Packages]# rpm -K --nodigest zsh-4.3.10-7.el6.i686.rpm
zsh-4.3.10-7.el6.i686.rpm: rsa (md5) pgp OK
[root@CentOS6 Packages]# rpm -K --nosignature zsh-4.3.10-7.el6.i686.rpm
zsh-4.3.10-7.el6.i686.rpm: sha1 md5 OK
RPM- 数据库重建:
数据库目录:/var/lib/rpm
重建数据库:
rpm --initdb:初始化
如果事先没有库,会新建一个;如果有,则不新建;
rpm --rebuilddb : 重建
直接重建,覆盖原有的数据库
RedHat Linux---rpm 命令详解