标题:YUM 公钥认证及导入及CentOS Linux自建yum源自制公钥。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Sun, 11 Sep 2016 17:40:58 +0000 作者:jackxiang 地址:http://jackxiang.com/post/8942/ 内容: CentOS Linux自建yum源,在后面贴上文字: 来自:http://www.live-in.org/archives/1410.html rpm -qa gpg-pubkey* rpm包来源合法性及完整性检验: 前提:在当前系统上导入包的制作者的公钥 导入: rpm --import /path/to/key_file # rpm -qa gpg-pubkey* 显示所有已经导入的gpg格式的公钥 # rpm -qi gpg-pubkey-NAME 显示密钥的详细信息 检查包:安装过程中会自动执行 手动检查: rpm -K /path/to/package_file rpm --checksig /path/to/package_file 不检查包完整性: rpm -K --nodigest 不检查来源合法性: rpm -K --nosignature 来自:http://1983939925.blog.51cto.com/8400375/1529663 ====================================== 平时使用yum方式安装更新软件,可以自建一个yum源,同步官方更新源,这样如果本地有机器要升级的话就可以直接使用本地的更新源了。这里系统为CentOS 6.2。 一、服务端 1、安装需要的环境 自建yum本地更新源可以使用http服务或ftp服务,由于ftp服务器要考虑防火墙配置,主动、被动连接模式,这里使用http服务。 安装apache: yum install httpd 配置apache过程略过。 2、安装createrepo软件包 yum install createrepo 3、建立存放软件包目录 mkdir -p /home/yum/centos/6/ chown -R apache:apache /home/yum/ 4、apache创建虚拟目录 vim /etc/httpd/conf/httpd.conf 在最后加入: NameVirtualHost *:80 DocumentRoot /home/yum ServerName XXX.XXX.XXX #填写绑定的域名 Options Indexes FollowSymlinks 5、将rpm软件包放入/home/yum/centos/6/目录 6、执行createrepo createrepo /home/yum/centos/6 在/home/yum/centos/6目录下会自动生成repodata目录,repodata目录里是一个数据库,其中的文件主要是XML格式,描述了一个rpm包的详细信息,如依赖关系,包含文件,校验码信息。 二、客户端 1、创建yum客户端repo文件 vim /etc/yum.repos.d/test.repo 以.repo为后缀,这里名字为test。 添加: [test] name=yum test baseurl=http://XXX.XXX.XXX/centos/6 enabled=1 gpgcheck=1 gpgkey=http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO 说明: [test]:是repo id。 name:仓库的描述。 baseurl:仓库的位置。 enabled:是否启用这个仓库,1为起用,0为禁用。 gpgcheck:是否检查gpg签名,1为检查,0为不检查。 (XXX.XXX.XXX是绑定的域名) PS:如果是内部使用,gpgcheck可以设置为0(同时gpgkey也不用设置),如果更新源放在公网上的话还是需要检查gpg签名,保证客户端得到来源的可靠性。 2、查看yum更新源列表 yum repolist 是否有名为yum test的源出现。 三、(可选)服务端使用gpg key对rpm软件包进行签名 1、创建gpg key gpg key也是基于非对称加密算法,产生公钥和私钥。 执行: cd ~ gpg --gen-key 创建过程: 选择加密算法、加密强度、是否设置有效期 设置名称和邮箱 输入保护密码 在/root/.gnupg目录下生成公钥和私钥文件。据观察pubring.gpg是公钥,secring.gpg是私钥。 2、查看公钥 gpg --list-key 显示如下: /root/.gnupg/pubring.gpg ------------------------ pub 2048R/EF9632F2 2012-07-21 uid test repo sub 2048R/C17A35BC 2012-07-21 3、在家目录建立.rpmmacros文件 cd ~ vim .rpmmacros 添加: %_signature gpg %_gpg_name test repo %_gpg_name后面要填写gpg --list-key命令显示的uid,指定这一组key进行签名。 4、对rpm软件包签名 以mtree-2.7-1.el6.rf.i686.rpm软件包为例。 cd /home/yum/centos/6 rpm --resign mtree-2.7-1.el6.rf.i686.rpm 随后需要输入保护密码。 5、导出公钥到文本文件 cd ~ gpg --export -a "test repo " >RPM-GPG-KEY-TESTREPO 6、验证是否签名成功 查看rpm数据库中的公钥: rpm -q gpg-pubkey gpg-pubkey-c105b9de-4e0fd3a3 导入公钥: rpm --import RPM-GPG-KEY-TESTREPO rpm -q gpg-pubkey gpg-pubkey-c105b9de-4e0fd3a3 gpg-pubkey-ef9632f2-500a6e55 已经添加了一组公钥。 检验rpm软件包: cd /home/yum/centos/6 rpm -K mtree-2.7-1.el6.rf.i686.rpm mtree-2.7-1.el6.rf.i686.rpm: rsa sha1 (md5) pgp md5 OK 7、将公钥放到web服务器上 cp ~/RPM-GPG-KEY-TESTREPO /home/yum/centos/ 8、服务端更新仓库信息 createrepo --update /home/yum/centos/6 主要是更新repodata目录中的数据。 四、(可选)客户端导入公钥 rpm --import http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO (XXX.XXX.XXX是绑定的域名) 测试安装: yum install mtree 参考资料: http://jianlee.ylinux.org/Computer/Linux发行版开发/createrepo.html http://zhumeng8337797.blog.163.com/blog/static/100768914201231852812921/ http://ramblings.narrabilis.com/creating-a-yum-repository-repo-and-creating-a-yum-group-to-install-kickstart Generated by Jackxiang's Bo-blog 2.1.1 Release