rpm包添加数字签名

问题:

更新前未用数字签名验证更新文件的合法性。

思路:

rpm包添加数字签名,在安装更新前使用公钥进行校验

步骤:

host1:

gpg --gen-key  # 生成公私秘钥  各个选项任选 1 2048 rpmuser [email protected]...
gpg --list-key # 查看现有的秘钥
vim ~/.rpmmacros  
    %_signature gpg
    %_gpg_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 
gpg --delete-sccret-keys 


2,删除导入的公钥:
rpm -e gpg-pubkey-xxxxxxx   # 公钥也是一个rpm包

你可能感兴趣的:(rpm包添加数字签名)