问题:
更新前未用数字签名验证更新文件的合法性。
思路:
rpm包添加数字签名,在安装更新前使用公钥进行校验
步骤:
host1:
gpg --gen-key # 生成公私秘钥 各个选项任选 1 2048 rpmuser rpmuser@163.com...
gpg --list-key # 查看现有的秘钥
vim ~/.rpmmacros
%_signature gpg
%_gpg_name <name> # 本例中<name> --> rpmuser
%_gpg_path /root/.gnupg
%_gpgbin /usr/bin/gpg
# 增加签名两种途径
rpm --addsign xxxx.rpm #第一种 打包好的rpm包增加签名
or
rpmbuild -ba --sign xxx.spec # 第二种 打包时使用 --sign
# 将公钥导出
gpg --export -a "rpmuser" > RPM-GPG-KEY-RPMUSER
or
cd /root/.gnupg/
gpg -a --export -o RPM-GPG-KEY-RPMUSER
# 将公钥拷贝到host2
host2:
rpm -q gpg-pubkey-* # 查询现有的gpg公钥
rpm --import RPM-GPG-KEY-RPMUSER # 公钥导入
再次执行 rpm -q gpg-pubkey-* 会发现增加一个新的gpg
# 校验包含签名的rpm包
rpm -K xxx.rpm
结果:
xxx.rpm: rsa sha1 (md5) pgp md5 确定 # 校验成功(通过)
xxx.rpm: RSA sha1 (MD5) PGP md5 不正确 # 校验失败(不通过)
xxxx.rpm: rsa sha1 (md5) pgp md5 OK
xxxx.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#14a52718)
# 编码为gpg_id
删除:
1,删除公钥 私钥
gpg --delete-keys <name>
gpg --delete-sccret-keys <name>
2,删除导入的公钥:
rpm -e gpg-pubkey-xxxxxxx # 公钥也是一个rpm包
网友评论