Red Hat Training
A Red Hat training course is available for Red Hat Satellite
客户端配置指南
红帽网络 Satellite 5.4
红帽网络 Satellite
版 1
摘要
欢迎阅读红帽网络 Satellite 客户端配置指南。
第 1 章 简介
本实习指南旨在帮助 RHN Satellite Server 和 RHN Proxy Server 客户更轻松地配置其客户端系统。
默认情况下,应将所有 Red Hat Network 客户端应用程序配置为与 Red Hat Network 服务器进行沟通。当将客户端系统连接到 RHN Satellite Server 或者 RHN Proxy Server 时,要更改很多设置。为一两个系统修改客户端设置也许相对简单,但在大型企业环境中,面对成百上千的系统,这里提供的对大量系统进行重新配置的步骤就会更有用。
因为这些任务的复杂性,用户可以使用一个事先生成的脚本文件来自动进行那些访问 Satellite 或代理服务器所需的任务,请参阅 第 5 章 使用 RHN Bootstrap 来获得详细信息。Red Hat 认为,了解这些修改的含义是很有用的,因此,我们在开始的章节中介绍了进行手动重新配置的步骤。您可以根据自己的经验来使用适合于您机构环境的最佳方法。
虽然这里介绍的许多命令都可以直接使用,但是我们无法涵盖所有可能的网络配置。因此,Red Hat 建议您将本指南中介绍的命令作为参考信息来使用,并根据您的实际情况做相应的修改。
注意
Unix 客户端配置信息请参考《RHN Satellite Server 参考指南》中的《Unix 支持》一章。
第 2 章 客户端应用程序
要获得 Red Hat Network 提供的大多数企业级功能,如在一个 RHN Satellite 服务器中注册,配置最新的客户端应用程序是必需的。在注册到 Red Hat Network 前获得这些应用程序会有一些困难,这个问题对那些从大量的旧系统迁移到 Red Hat Network 的用户来说尤为突出。本章介绍了解决这些问题的方法。
重要
Red Hat 强烈推荐连接到 RHN Proxy Server 或 RHN Satellite Server 的客户端系统运行最新的 Red Hat Enterprise Linux 版本来保证正确的连接。
另外,如果配置了客户端防火墙,就应该开启端口 80 和 443 以便 Red Hat Network 正常工作。
2.1. 部署最新的 Red Hat Network 客户端 RPM
要使用 Red Hat Network 的企业级功能,Package Updater(
pup
)、yum
、Red Hat Enterprise Linux 5 中的 Red Hat Network Registration Client(rhn_register
)以及较早 Red Hat Enterprise Linux 版本中的 up2date
是必须的。如果您要在您的环境中使用 RHN Proxy Server 或者 RHN Satellite Server,则在客户端系统中安装这些程序是很重要的。
这里有一些明智的完成 RHN 客户端软件更新的方法。其中之一就是将 RPM 存放在一个所有客户端系统都可以访问的地方,并使用可能的最简单的命令来部署这些软件包。几乎任何情况下都不需要手动执行
yum
、pup
和 rhn_register
(如果是较早的 Red Hat Enterprise Linux 版本,就是 up2date
)。这些客户端工具都应该可以连接到您的 RHN Satellite 或代理服务器环境。以下的讨论的前提是假设这些“即时可用”的 yum
、pup
和 rhn_register
(或者 up2date
)不是最新的版本,且无法在您的环境中工作。
请记住,只有运行 Red Hat Enterprise Linux 5 的系统必须在安装后在
firstboot
中注册 RHN 或者使用 rhn_register。运行 Red Hat Enterprise Linux 3 和 4 的系统可使用嵌合在 Red Hat Update Agent 中的注册功能。
本文档假设用户至少已经在其网络中安装了一个 RHN Satellite Server 和(或者) RHN Proxy Server。下面的例子演示系统管理员假设机器还没有正常工作的 RHN 的情况下,第一次使用
yum
、pup
、rhn_register
(或者 up2date
)的简单方法。这个管理员已经使用简单命令 rpm -Uvh
,在 /var/www/html/pub/
目录中复制了客户端系统需要的 yum
、pup
、rhn_register
(或者 up2date
)RPM。在客户端中运行,这个命令会将这些 RPM 安装到那个客户端中,假设域名、路径和 RPM 版本是正确的(请注意:为方便输出以及生成 PDF 版本而将这个命令分成几行,但在 shell 提示符后它应该是一行)。
rpm -Uvh http://your_proxy_or_sat.your_domain.com/pub/rhn-setup-0.4.17-8.el5.i386.rpm http://your_proxy_or_sat.your_domain.com/pub/yum-3.2.8-9.el5.i386.rpm http://your_proxy_or_sat.your_domain.com/pub/pirut-1.3.28-13.3l5.noarch.rpm
请记住:可能需要根据所服务的系统更改这个构架(在这里是
i386
)。
2.2. 配置客户端应用程序
不是每个用户都必须安全地与机构内的 RHN Satellite Server 或 RHN Proxy Server 进行连接;不是每个用户都需要为自定义软件包创建并部署 GPG 密钥。(这两个选项会在以后详细介绍。)但是,每个使用 RHN Satellite Server 或 RHN Proxy Server 的用户必须重新配置 Red Hat Update Agent (
up2date
)(可能还包括 Red Hat Network Registration Client (rhn_register
))来将其从 Red Hat Network 重新定向到需要使用的 RHN Satellite Server 或 RHN Proxy Server。
重要
虽然这是无法配置的,但请注意在 HTTP 中 up2date 使用端口 80,而在安全 HTTP(HTTPS)是使用端口 443。默认情况下,Red Hat Enterprise Linux 5 中的
yum
只使用 SSL。由于这个原因,用户应该确定其防火墙允许通过端口 443 连接。要绕过 SSL,请在 /etc/sysconfig/rhn/up2date
文件中将协议的 serverURL
从 https
改为 http
。同样,要使用 RHN 的 Monitoring 特性和探测则需要 Red Hat Network Monitoring Daemon。请注意:客户端系统必须允许端口 4545(或者端口 22,如果使用 sshd
)中的连接。
默认情况下,
rhn_register
和 up2date 指的是主 Red Hat Network 服务器。用户必须重新配置客户端系统将其指向 RHN Satellite Server 或者 RHN Proxy Server。
注意,最新版本的 Red Hat Update Agent 可以被配置为使用多个 RHN 服务器,因此可以在无法访问主服务器的时候提供故障恢复(failover)保护。启用此特性的步骤请参阅 第 2.2.4 节 “使用服务器故障切换”。
接下来的小节介绍了配置客户端系统访问 RHN Satellite Server 或 RHN Proxy Server 的不同方法,要了解如何编写脚本虚拟重新配置所有系统,请参阅 第 6 章 手动修改配置脚本。
2.2.1. 使用激活码注册
Red Hat 推荐使用激活码注册和配置访问 RHN Proxy Server 或 RHN Satellite Server 的客户端系统。使用激活码可以一次完成注册、获得权利和订阅系统的所有行动。请参考《RHN Satellite Server 参考指南》中的中“激活码”部分。
使用一个激活码注册需要以下四个基本步骤:
- 生成激活码。
- 导入定制 GPG 密钥。
- 从 RHN Proxy Server 或 RHN Satellite Server 的
/pub/
目录中下载并安装 SSL 证书 RPM。执行这个任务的命令如下所示:rpm -Uvh http://your-satellite-FQDN/pub/rhn-org-trusted-ssl-cert-1.0-1.noarch.rpm
- 在 RHN Proxy Server 或 RHN Satellite Server 中注册您的系统。执行这个任务的命令如下所示:
rhnreg_ks --activationkey mykey --serverUrl https://your-satellite-FQDN/XMLRPC
另外,可将上述大多数步骤合并为一个包含以下行的 shell 脚本(请注意:为方便输出以及生成 PDF 版本将这个命令分成几行,但在 shell 提示符后它应该是一行)。
wget -0 - http://your-satellite-FQDN/pub/bootstrap.sh | bash && rhnreg_ks --activation-key my_key --serverUrl https://your-satellite-FQDN/XMLRPC
在安装中生成并对 RHN Satellite Server 和 RHN Proxy Server 都有效的引导脚本就是这样的一个脚本。在 第 5 章 使用 RHN Bootstrap 中具体论述了这个脚本以及生成它的 RHN Bootstrap。
警告
使用 Red Hat Enterprise Linux 2.1 和 Red Hat Linux 8.0 以前版本的系统会在使用激活码将 SSL 证书设置从
rhn_register
迁移到 up2date
时出现问题。因此,必须手动配置这些系统中的 SSL 证书信息。所有其它设置(如服务器的 URL)可以被正确地转换。
2.2.2. up2date --configure
选项
Red Hat Enterprise Linux 3 和 4 中的 Red Hat Update Agent 提供配置各种设置的界面。这些设置的完整列表请参考
up2date
手册(在命令行中使用 man up2date
)。
要重新配置 Red Hat Update Agent,请以 root 用户的身份运行以下命令:
up2date --configure
您可以看到一个对话框,其中包括了可以被重新配置的不同的设置。在「常规」标签页中,在「
选择要使用的 Red Hat 网络服务器
」下使用 RHN Satellite Server 或 RHN Proxy Server 的 FQDN 替换默认值,如https://your_proxy_or_sat.your_domain.com/XMLRPC
。保留结尾的/XMLRPC
。完成后,点「确定」。
图 2.1. Red Hat Update Agent GUI 配置
确定您输入了正确的 RHN Satellite Server 或 RHN Proxy Server 域名。如果输入了错误的域名或没有输入,
up2date --configure
将可能无法启动。这个问题可以通过编辑 up2date
配置文件中的值来解决。请参阅 第 2.2.3 节 “手动更新配置文件” 来获得详细的信息。
警告
运行 Red Hat Enterprise Linux 3 或者 4 的系统在 Red Hat Update Agent 中嵌入注册功能,并因此不安装 Red Hat Network Registration Client。运行 Red Hat Enterprise Linux 5 的系统不使用
up2date
,并需要 rhn_register
将其系统注册到 RHN 或者 Satellite,并使用 yum
和 pup
更新其软件包。
2.2.3. 手动更新配置文件
除了前面介绍的 GUI 界面外,用户还可以通过编辑应用程序的配置文件来重新配置 Red Hat Update Agent。
要配置连接到 RHN Proxy Server 或 RHN Satellite Server 的客户端系统中的 Red Hat Update Agent,请编辑(以 root 身份)
/etc/sysconfig/rhn/up2date
配置文件中的 serverURL
和 noSSLServerURL
值。使用 RHN Proxy Server 或 RHN Satellite Server 的 FQDN 替换默认的 Red Hat Network URL。
serverURL[comment]=Remote server URL serverURL=https://your_primary.your_domain.com/XMLRPC noSSLServerURL[comment]=Remote server URL without SSL noSSLServerURL=http://your_primary.your_domain.com/XMLRPC
警告
/etc/sysconfig/rhn/up2date
中的 httpProxy
设置 不 指向 RHN Proxy Server。它被用来为客户端系统配置一个可选的 HTTP 代理服务器。如果您的网络中存在一个 RHN Proxy Server,httpProxy
的设置必须为空(不要设置任何值)。
2.2.4. 使用服务器故障切换
从
up2date-4.2.38
开始,可将 Red Hat Update Agent 配置为从一系列 RHN 服务器中查找更新。当您需要马上进行更新而您的主 RHN Proxy Server 或 RHN Satellite Server 却不在线时,这个功能就非常有用。
要使用这个功能,请首先确认您运行了所需的
up2date
版本。然后,手动将从服务器加入到(以 root 身份)/etc/sysconfig/rhn/up2date
的 serverURL
和 noSSLServerURL
设置中。在主服务器的后面加入从代理服务器或 Satellite 服务器的 FQDN,服务器间以分号(;)分隔。例如:
serverURL[comment]=Remote server URL serverURL=https://your_primary.your_domain.com/XMLRPC; https://your_secondary.your_domain.com/XMLRPC; noSSLServerURL[comment]=Remote server URL without SSL noSSLServerURL=http://your_primary.your_domain.com/XMLRPC; https://your_secondary.your_domain.com/XMLRPC;
根据在此提供的顺序尝试连接到服务器。您可以将您所需要的所有服务器都包括在内。您可能还希望列出中央 RHN 服务器。这只有在客户端系统可以与互联网连接的时候才有意义。
2.3. 软件包更新程序
红帽企业版 Linux 5 具有从 RHN 或者 Satellite 服务器中定期查看在图形桌面面板中运行程序的更新,并在新更新可用时通知用户的功能。
图 2.2. 软件包更新程序
软件包更新程序停留在桌面面板的通知托盘中,并定期查看新的更新。还可让您通过点击通知图标并从以下动作中进行选择来执行一些软件包维护操作:
- 刷新 -- 查看 RHN 或者 Satellite 中是否有新的更新
- 查看更新 -- 启动软件包更新应用程序以便查看可用更新详情并配置更新
- 应用更新 -- 下载并安装所有更新软件包。
- 退出 -- 关闭程序
2.4. 使用 Satellite 配置 Red Hat Network Alert Notification Tool
Red Hat Network Alert Notification Tool 在您的 Red Hat Enterprise Linux 3 或者 4 的桌面面板中是一个圆形图标,可在运行 Red Hat Enterprise Linux 3 或更新版本的系统中设置以便在您的 RHN Satellite Server 中识别自定义频道。您必须确定将 RHN Satellite Server 配置为支持此功能。(RHN Proxy Server 无需修改客户端或者服务器即可支持此 applet。)配置 Red Hat Network Alert Notification Tool 的步骤如下:
- 确定您的 RHN Satellite Server 是 3.4 或更新的版本并在 Satellite 服务器中安装
rhns-applet
软件包。这个软件包可以在 RHN Satellite 软件包频道(3.4 或更新版本)中找到。 - 通过
up2date
或 Red Hat Network 工具软件频道获得rhn-applet-actions
软件包。在需要使用 Red Hat Network Alert Notification Tool 接收自定义更新的所有运行 Red Hat Enterprise Linux 3 和更高版本的客户端系统上安装这个软件包。客户端系统必须有 Management 或 Provisioning 服务级别的权利。 - 在 RHN 网站的 Satellite 版本中,进入每个系统的「系统详情」页,点「RHN Applet」中的链接将 Red Hat Network Alert Notification Tool 重新定向到 Satellite 服务器。
这个插件程序会在下一次启动时使用新的配置并连接到 RHN Satellite Server 进行更新。
第 3 章 SSL 构架
对于 Red Hat Network 客户来说,安全性是要关注的首要问题。Red Hat Network 的优点之一就是可在安全套接层或者 SSL 中处理每一个请求。要保持这种水准层的安全性,在其构架中安装 Red Hat Network 的客户必须生成定制的 SSL 密钥和证书。
也可以手动生成和部署 SSL 密钥及证书。RHN Proxy Server 和 RHN Satellite Server 都允许您在安装过程中根据您自己的专用认证机构(CA)创建您自己的 SSL 密钥和证书。另外还可使用独立的命令行工具 RHN SSL Maintenance Tool 完成此工作。无论您使用什么方法,必须将这些密钥和证书部署到您所管理构架的所有系统中。在很多情况下会自动为您部署这些 SSL 密钥和证书。本章论述了执行这些任务的有效方法。
请注意,本章不深入介绍 SSL。RHN SSL Maintenance Tool 的设计掩饰了很多设置和维护此公钥构架(PKI)的复杂性。有关详情请查阅相关的参考书籍。
3.1. SSL 简介
SSL,也称安全套接层,是一个可让客户端-服务器应用程序安全传递信息的协议。SSL 使用公钥和私钥对的构架来对客户端和服务器之间的沟通加密。公共证书可以公开,但私钥必须保密。它是使系统工作的专用密钥及其配对公共证书间的数学关系(即数字签名)。通过这个关系可建立可信连接。
注意
有关 SSL 私钥和公共证书的讨论贯穿于本文档始终。从技术角度说,两者都可作为密钥参考(公钥和私钥)。但按惯例,在讨论 SSL 时,使用 SSL 密钥对的公共部分那一半作为 SSL 公共证书。
一个机构的 SSL 构架通常由 SSL 密钥和证书组成:
- 认证机构(CA)SSL 私钥和公共证书 — 通常每个机构只生成一对。公共证书使用其私钥进行数字签名。公共证书会被发布到每个系统。
- 网页服务器 SSL 私钥和公共证书 — 每个应用程序服务器都有一组。使用其私钥和 CA SSL 私钥对进行数字签名。我们经常会参考网页服务器的密钥组,这是因为中继的 SSL 证书要求生成网页服务器密钥。有关此密钥应用的详情并不重要,在此不进行具体讨论。要求将这三个密钥都部署到 RHN服务器中。
有这样一种情况:如果您有一个 RHN Satellite Server 和五个 RHN Proxy Server,您就需要生成一个 CA SSL 密钥对和六个网页服务器 SSL 密钥组。CA SSL 公共证书会被部署到所有系统中,所有要与其对映上级服务器建立连接的客户端都会使用该证书。每个服务器都有其自身的与特定服务器主机名绑定的 SSL 密钥组,该密钥组是由其自身 SSL 私钥和 CA SSL 私钥联合生成的。这样就在网页服务器的 SSL 公共证书和 CA SSL 密钥对以及服务器私钥间建立了数字验证关联。网页服务器的密钥组不能被其它网页服务器共享。
重要
这个系统中最重要的部分就是 CA SSL 密钥对。通过那个私钥和公共证书,管理员可重新生成任意网页服务器 SSL 密钥组。这个 CA SSL 密钥对必须是保密的。强烈建议您设置并运行了服务器的完整 RHN 构架后,将使用此工具和/或者安装程序生成的 SSL 创建目录归档到独立的介质中,记录 CA 密码,并将该介质和密码妥善保管。
3.2. RHN SSL Maintenance Tool
Red Hat Network 提供了可简化您安全构架管理的命令行工具:RHN SSL Maintenance Tool,通常使用的命令为
rhn-ssl-tool
。这个工具是 rhns-certs-tools
软件包的一部分。在最新 RHN Proxy Server 和 RHN Satellite Server(也可在RHN Satellite Server ISO 中)的软件频道中找到此软件包。RHN SSL Maintenance Tool 可允许您生成您自己的认证机构 SSL 密钥对以及网页服务器 SSL 密钥组(有时也称密钥对)。
这个工具只是一个构建工具。它可生成所有需要的 SSL 密钥和证书。它还可将文件打包为 RPM 格式以便迅速将其发布和安装到所有客户机中。但它不能部署它们,这个任务留给了管理员,或者在很多情况下由 RHN Satellite Server 自动完成。
注意
rhns-certs-tools
中包含 rhn-ssl-tool
,在目前任意最低配置的红帽企业版 Linux 系统中都可安装并运行。这就为想要在其工作站或者 RHN 以外的其它系统中管理其 SSL 构架的管理员提供了方便。
在以下情况下需要此工具:
- 在更新您的 CA 公共证书时 - 这种情况很少见。
- 安装 RHN Proxy Server 3.6 或者更新的版本,并将其连接到中央 RHN 服务器作为其最高级别服务时 - 出于安全考虑,托管服务不能作为您机构专用的 CA SSL 密钥和证书库使用。
- 将您的 RHN 构架重新配置为使用 SSL 时(之前没有使用 SSL)。
- 将 3.6 以前版本的 RHN Proxy Server 添加到您的 RHN 系统。
- 将多个 RHN Satellite Server 添加到您的 RHN 系统中 - 请咨询 Red Hat 客户服务代表来获得帮助。
以下是不需要使用这个工具的情况:
- 安装 RHN Satellite Server - 所有的 SSL 设置都在安装的过程中被配置。SSL 密钥和证书会被自动地构建并被实施。
- 安装 RHN Proxy Server 版本 3.6 或更新版的版本,这个系统提供最高级别的服务并连接到 RHN Satellite Server 版本 3.6 或更新的版本 - RHN Satellite Server 包括了配置、构建和实施 RHN Proxy Server 需要的所有 SSL 密钥和证书的信息。
安装 RHN Satellite Server 和 RHN Proxy Server 的过程保证了将 CA SSL 公共证书部署到每个服务器的
/pub
目录中。这个公共证书被客户端用来与 RHN 服务器进行连接。请参阅 第 3.3 节 “在客户端中部署 CA SSL 公共证书” 来获得详细的信息。
简单地说,如果您的 RHN 系统使用了最新版本的 RHN Satellite Server 作为最高级别的服务,您可能并不太需要使用这个工具。否则,您可能会需要熟悉这个工具的使用。
3.2.1. 创建 SSL 详解
使用 RHN SSL Maintenance Tool 主要优点是安全、灵活以及它的可移植性。通过为每个 RHN 服务器创建不同的 Web 服务器 SSL 密钥和证书(使用您的机构创建的证书管理机构(CA)SSL 密钥对进行签注),可以实现系统的安全性。工具程序可以在任何安装了
rhns-certs-tools
软件包的机器上工作,这就为系统提供了灵活性。而构建结构可以被安全地保存在任何地方并可以在任何需要它的地方进行安装,这就实现了它的可移植性。
再次强调,如果您的系统的最高级 RHN 服务器是最新版本的 RHN Satellite Server,您需要做的事情可能只是通过一个归档将您的
ssl-build
树恢复到 /root
目录并利用 RHN Satellite Server 网站所提供的配置工具。
要更好地使用 RHN SSL Maintenance Tool,以这个顺序完成以下的任务。请阅读接下来的章节来获得详细的信息:
- 在您机构内的系统中(可能是 RHN Satellite Server 或 RHN Proxy Server,也可能不是)安装
rhns-certs-tools
软件包。 - 为您的机构创建一个单一的认证机构 SSL 密钥对,并在所有客户端系统中安装创建的 RPM 或公共证书。
- 在每个需要使用的代理服务器和 Satellite 服务器上创建一个 Web 服务器 SSL 密钥集并在 RHN 服务器上安装获得的 RPM,重新启动
httpd
服务:/sbin/service httpd restart
- 将 SSL 构建树 归档(包括主构建目录以及所有的子目录和文件)到可移动的介质上,如软盘。(并不需要太多的磁盘空间。)
- 检查这个归档的完整性并将其存放在一个安全的地方,如在《Proxy 安装指南》或《Satellite 安装指南》中的<附加要求>章节中所介绍的备份方法中使用的位置。
- 为今后的使用记录和保管 CA 密码。
- 为了安全的目的,从构建系统中删除构建树。请注意,只有在整个 RHN 系统被创建好并被配置完成后才能执行这个工作。
- 当需要额外的 Web 服务器 SSL 密钥时,通过运行 RHN SSL Maintenance Tool 并重复步骤 3 到步骤 7 在系统中恢复构建树。
3.2.2. RHN SSL Maintenance Tool 选项
RHN SSL Maintenance Tool 提供了一个命令行选项来创建您的认证机构 SSL 密钥对并管理您的服务器 SSL 证书和密钥。这个工具有三个基本的命令行选项帮助:
rhn-ssl-tool --help
(通用)、rhn-ssl-tool --gen-ca --help
(认证机构)、rhn-ssl-tool --gen-server --help
(网页服务器)。rhn-ssl-tool 的说明书页也提供了详细的信息,运行 man rhn-ssl-tool
可以查看这个说明书页。
根据它们任务的不同,选项被分为了以下两个列表(CA 密钥组和网页服务器 SSL 密钥组)。
这组选项必须跟在
--gen-ca
参数的后面:
表 3.1. SSL 认证机构 (CA) 选项 (rhn-ssl-tool --gen-ca --help
)
选项 | 描述 |
---|---|
--gen-ca | 生成认证机构(CA)密钥对和公共 RPM。本表格中的其余选项必须有此密钥对。 |
-h , --help | 显示帮助页面,其中列出了根据要生成和管理认证机构所需的基本选项。 |
-f , --force | 强制创建一个新的 CA 专用密钥和/或者公共证书。 |
-p= , --password=PASSWORD | CA 密码。如果该密码丢失会为您进行提示。请以安全方式保存此密码。 |
-d= , --dir=BUILD_DIRECTORY | 大多数命令都需要 - 创建证书和 RPM 的目录。默认为 ./ssl-build 。 |
--ca-key=FILENAME | CA 私钥文件名。默认为 RHN-ORG-PRIVATE-SSL-KEY 。 |
--ca-cert=FILENAME | CA 公共证书文件名。默认为 RHN-ORG-TRUSTED-SSL-CERT 。 |
--cert-expiration=CA_CERT_EXPIRE | 公共 CA 证书的过期日期。默认为距进入下个世纪前一天的天数(或者 01-18-2038)。 |
--set-country=COUNTRY_CODE | 两个字母的国家编码。默认为 US。 |
--set-state=STATE_OR_PROVINCE | CA 的省、自治区、直辖市。默认为 ''。 |
--set-city=CITY_OR_LOCALITY | 城市或者位置。默认为 ''。 |
--set-org=ORGANIZATION | 公司或者机构,比如 Red Hat。默认为 Corp. Inc 示例。 |
--set-org-unit=SET_ORG_UNIT | 机构级别的单位,比如 RHN。默认为 ''。 |
--set-common-name=HOSTNAME | 不为 CA 特殊设定 - 一般名称。 |
--set-email=EMAIL | 不为 CA 特殊设定 - 电子邮件地址。 |
--rpm-packager=PACKAGER | 生成 RPM 的打包程序,比如 "RHN Admin (rhn-admin@example.com)。" |
--rpm-vendor=VENDOR | 生成 RPM 的供应商,比如 "IS/IT Example Corp。" |
-v , --verbose | 显示详细信息。可累加的 "v" 会给出更详细的信息。 |
--ca-cert-rpm=CA_CERT_RPM | 很少修改 - 使用 CA 证书的 RPM 名称(基本文件名,而不是文件名-版本-release.noarch.rpm)。 |
--key-only | 很少使用 - 只生成 CA 私钥。详情请查看 --gen-ca --key-only --help 。 |
--cert-only | 很少使用 - 只生成 CA 公钥。详情请查看 --gen-ca --cert-only --help 。 |
--rpm-only | 很少使用 - 只为部署生成 RPM。详情请查看 --gen-ca --rpm-only --help 。 |
--no-rpm | 很少使用 - 执行除生成 RPM 之外的所有 CA 相关步骤。 |
以下选项必须放在
--gen-server
参数之后:
表 3.2. SSL 网页服务器选项(rhn-ssl-tool --gen-server --help
)
选项 | 描述 |
---|---|
--gen-server | 生成网页服务器的 SSL 密钥组、RPM 和 tar 归档。必须将其与本表格中的其余选项一同使用。 |
-h , --help | 显示帮助页面,其中列出了根据要生成和管理的服务器密钥对所需的基本选项。 |
-p= , --password=PASSWORD | CA 密码。如果该密码丢失会为您进行提示。请以安全方式保存此密码。 |
-d= , --dir=BUILD_DIRECTORY | 大多数命令都需要 - 创建证书和 RPM 的目录。默认为 ./ssl-build 。 |
--server-key=FILENAME | 网页服务器的 SSL 私钥文件名。默认为 server.key 。 |
--server-cert-req=FILENAME | 网页服务器的 SSL 证书所需文件名。默认为 server.csr 。 |
--server-cert=FILENAME | 网页服务器的 SSL 证书文件名。默认为 server.crt 。 |
--startdate=YYMMDDHHMMSSZ | 示例格式中的服务器证书有效其实日期:年、月、日、时、分、秒(每个数值有两个字符)。Z 代表祖鲁。默认为生成证书前的一周。 |
--cert-expiration=SERVER_CERT_EXPIRE | 服务器证书的过期日期。默认为距进入下个世纪前一天的天数(或者 01-18-2038)。 |
--set-country=COUNTRY_CODE | 两个字母的国家编码。默认为 US。 |
--set-state=STATE_OR_PROVINCE | 省、自治区、直辖市。默认为 North Carolina。 |
--set-city=CITY_OR_LOCALITY | 城市或者位置。默认为 Raleigh。 |
--set-org=ORGANIZATION | 公司或者机构,比如红帽。默认为 Example Corp. Inc。 |
--set-org-unit=SET_ORG_UNIT | 机构级别的单位,比如 RHN。默认为单位。 |
--set-hostname=HOSTNAME | RHN 服务器用来接收密钥的主机名。默认为动态设定来建立机器的主机名。 |
--set-email=EMAIL | 证书联系电子邮件地址。默认为 admin@example.corp。 |
--rpm-packager=PACKAGER | 生成 RPM 的打包程序,比如 "RHN Admin (rhn-admin@example.com)。" |
--rpm-vendor=VENDOR | 生成 RPM 的供应商,比如 "IS/IT Example Corp。" |
-v , --verbose | 显示详细信息。可累加的 "v" 会给出更详细的信息。 |
--key-only | 很少使用 - 只生成服务器私钥。详情请查看 --gen-server --key-only --help 。 |
--cert-req-only | 很少使用 - 只生成服务器证书查询。详情请查看 --gen-server --cert-req-only --help 。 |
--cert-only | 很少使用 - 只生成服务器证书。详情请查看 --gen-server --cert-only --help 。 |
--rpm-only | 很少使用 - 只为部署生成 RPM。详情请查看 --gen-server --rpm-only --help 。 |
--no-rpm | 很少使用 - 执行除生成 RPM 之外的所有服务器相关步骤。 |
--server-rpm=SERVER_RPM | 很少修改 - 作为网页服务器 SSL 密钥组的 RPM 名称(基本文件名,而不是文件名-版本-release.noarch.rpm)。 |
--server-tar=SERVER_TAR | 很少改变 - 包括网页服务器的 SSL 密钥组和只在 RHN Proxy Server安装过程中使用的 CA 公共证书的 .tar 归档文件名(基本文件名,而不是 filename-version-release.tar)。 |
3.2.3. 生成认证机构 SSL 密钥对
在生成网页服务器所需要的 SSL 密钥组前,您必须生成一个认证机构 (CA) SSL 密钥对。一个 CA SSL 公共证书会被发布到 Satellite 或 Proxy 的客户端系统中。如果需要的话,RHN SSL Maintenance Tool 允许您创建一个 CA SSL 密钥对并可以在以后的 RHN 服务器实施时重复使用。
构建过程会为到客户端系统的发布自动生成密钥对和公共 RPM。所有的 CA 组件都以命令行中指定的构建目录结束,通常是
/root/ssl-build
(在较老的 Satellite 服务器或 Proxy 中是 /etc/sysconfig/rhn/ssl
)。要创建一个 CA SSL 密钥对,请运行类似以下的命令:
rhn-ssl-tool --gen-ca --password=MY_CA_PASSWORD --dir="/root/ssl-build" \ --set-state="North Carolina" --set-city="Raleigh" --set-org="Example Inc." \ --set-org-unit="SSL CA Unit"
使用适合您的机构实际情况的值替换例子中的值。它会在指定的构建目录中产生以下相关的文件:
RHN-ORG-PRIVATE-SSL-KEY
— CA SSL 私钥RHN-ORG-TRUSTED-SSL-CERT
— CA SSL 公共证书rhn-org-trusted-ssl-cert-VER-REL.noarch.rpm
— 准备发布到客户端系统中的 RPM,其中包括上面的 CA SSL 公共证书并将其安装到:/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT
rhn-ca-openssl.cnf
— SSL CA 配置文件latest.txt
— 总是列出相关文件的最新版本。
完成后,您就可以向客户端系统发布 RPM。详情请参考 第 3.3 节 “在客户端中部署 CA SSL 公共证书”。
3.2.4. 生成网页服务器 SSL 密钥组
在创建前,您必须已经生成了一个 CA SSL 密钥对。您可能会需要比较频繁地生成网页服务器 SSL 密钥组,特别是当需要使用多于一个 Proxy 或 Satellite 服务器的时候。请注意,对于每个服务器,
--set-hostname
的值是不同的。换句话说,对于每个不同的 RHN 服务器主机,必须创建和安装不同的 SSL 密钥和证书。
服务器证书的构建过程与 CA SSL 密钥对产生的过程非常相似,一个不同之处是:所有服务器组件都在可以反映出构建系统机器名的子目录中,如
/root/ssl-build/MACHINE_NAME
。要产生服务器证书,运行与以下命令相似的命令:
rhn-ssl-tool --gen-server --password=MY_CA_PASSWORD --dir="/root/ssl-build" \ --set-state="North Carolina" --set-city="Raleigh" --set-org="Example Inc." \ --set-org-unit="IS/IT" --set-email="admin@example.com" \ --set-hostname="rhnbox1.example.com
使用适用于您机构的实际情况的值替换例子中的值。它将在构建目录中的一个指定了特定机器的子目录中产生以下相关的文件:
server.key
— 网页服务器 SSL 私钥server.csr
— 网页服务器 SSL 证书查询server.crt
— 网页服务器 SSL 公共证书rhn-org-httpd-ssl-key-pair-MACHINE_NAME-VER-REL.noarch.rpm
— 准备发布到 RHN 服务器的 RPM,同时会创建与它相关的 src.rpm 文件。这个 RPM 包括以上三个文件并将在以下位置中安装它们:/etc/httpd/conf/ssl.key/server.key
/etc/httpd/conf/ssl.csr/server.csr
/etc/httpd/conf/ssl.crt/server.crt
- rhn-server-openssl.cnf — 网页服务器 SSL 配置文件
latest.txt
— 总是列出相关文件的最新版本。
完成后,您就可以在相应的 RHN 服务器上发布并安装 RPM。请注意,
httpd
服务必须在安装后重新启动:
/sbin/service httpd restart
3.3. 在客户端中部署 CA SSL 公共证书
通过创建一个 CA SSL 公共证书和 RPM,RHN Proxy Server 和 RHN Satellite Server 的安装过程使在客户端中部署 CA SSL 公共证书变得相对容易。这些安装过程会把它们中的一个或全部放置到 RHN 服务器的
/var/www/html/pub/
目录中来使它们可以被访问。
通过网页浏览器 http://proxy-or-sat.example.com/pub/ 浏览该公共目录就可轻松对其进行访问。
使用
wget
或 curl
可下载该目录中的 CA SSL 公共证书。例如:
curl -O http://proxy-or-sat.example.com/pub/RHN-ORG-TRUSTED-SSL-CERT wget http://proxy-or-sat.example.com/pub/RHN-ORG-TRUSTED-SSL-CERT
或者,如果 CA SSL 公共证书 RPM 位于
/pub
目录中,您可以直接在一个客户端系统中安装它:
rpm -Uvh \ http://proxy-or-sat.example.com/pub/rhn-org-trusted-ssl-cert-VER-REL.noarch.rpm
在运行这些命令前请确认证书或 RPM 的实际的名称。
3.4. 配置客户端系统
一旦在客户端系统中部署了 RPM 或原证书,系统管理员必须修改 Red Hat Update Agent 和 Red Hat Network Registration Client(如果需要)的配置文件来使用新的 CA SSL 公共证书文件并连接到适当的 RHN Proxy Server 或 RHN Satellite Server。CA SSL 公共证书通常位于目录
/usr/share/rhn
中。
在默认情况下,RHN Proxy Server 和 RHN Satellite Server 都安装了 RHN Bootstrap,它将大大减少重复的工作并简化重新注册和配置客户端系统的过程。请参阅 第 5 章 使用 RHN Bootstrap 来获得详细的信息。
第 4 章 导入定制 GPG 密钥
对于要安全创建和发布其自身 RPM 的客户,我们强烈建议您使用 GNU 隐私卫士(GPG)为所有定制的 RPM 签名。有关生成 GPG 密钥并创建 GPG 签名的软件包的详情在《Red Hat Network 频道管理指南》中有具体论述。
为软件包签名后,必须让所有导入这些 RPM的系统部署此公共密钥。完成此任务有两个步骤:第一,为公共密钥生成集中位置以便客户端系统可以搜索此密钥;第二,为每个系统在本地 GPG 密钥环中添加此密钥。
第一步很常见,可以使用被推荐用来实施 RHN 客户端系统应用程序的网站的方法来进行。(请参阅 第 2.1 节 “部署最新的 Red Hat Network 客户端 RPM”。)要完成这一步,在 web 服务器上创建一个公共的目录并将 GPG 公共签名放在那个目录中即可:
cp /some/path/YOUR-RPM-GPG-KEY /var/www/html/pub/
然后客户端系统可使用 Wget 下载该密钥:
wget -O- -q http://your_proxy_or_sat.your_domain.com/pub/YOUR-RPM-GPG-KEY
-O-
选项会把结果发送到标准输出上,而使用 -q
选项的 Wget 不会输出结果。请记住,使用您的密钥文件名替换 YOUR-RPM-GPG-KEY。
客户端系统获得密钥后,会将其导入到本地的 GPG 密钥环中。不同的操作系统需要不同的方法。
对于 Red Hat Enterprise Linux 3 或更新的系统,使用以下命令:
rpm --import /path/to/YOUR-RPM-GPG-KEY
对于 Red Hat Enterprise Linux 2.1,使用以下命令:
gpg $(up2date --gpg-flags) --import /path/to/YOUR-RPM-GPG-KEY
成功将 GPG 添加到客户端后,该系统就应该可以验证使用相应密钥签名的定制 RPM。
第 5 章 使用 RHN Bootstrap
Red Hat Network 提供了比在以前的 RHN Bootstrap 章节中论述的手动重新配置更自动化的工具。这个工具是 RHN Satellite Server Installation Program 中不可缺少的角色,它可让您在安装的过程中创建引导程序脚本。
RHN Proxy Server 用户和使用更新的 Satellite 设置的用户需要可独立应用的引导程序工具。在默认情况下,RHN Bootstrap 在 RHN Satellite Server 和 RHN Proxy Server 中调用
/usr/bin/rhn-bootstrap
命令,创建独立使用的引导程序,并进行安装。
如果正确使用,这个工具生成的脚本可在任意客户端系统中运行来执行以下任务:
- 将客户端应用程序重新指向 RHN Proxy 或者 Satellite
- 导入定制 GPG 密钥
- 安装 SSL 证书
- 利用激活码在 RHN 以及特定系统组群和频道中注册系统
- 执行其它后配置性能,其中包括更新软件包、重启以及更改 RHN 配置
但是用户也应该注意到使用脚本进行配置的固有风险。类似 SSL 证书等安全工具是由脚本本身安装的,因此系统中还没有这些安全工具,也就不能使用它们进行处理。这就让有些人可能冒充 Satellite 传送有害数据。但在实际操作中,在客户防火墙保护下执行的 Satellite 和客户端系统操作都是虚拟的,且与外部流量分开,这样可以减少上述情况的发生。注册是通过 SSL 进行的,因此是受到保护的。
引导程序脚本
bootstrap.sh
是自动放置在 RHN 服务器的 /var/www/html/pub/bootstrap/
目录中。在那里您可以下载并在所有客户端系统中运行该脚本。请注意:这里需要一些准备和转换后执行脚本编辑,这在后面的内容中有所论述。该工具的完整选项列表请参考 第 5.4 节 “RHN Bootstrap 选项”。最后,请在 附录 A, 引导程序脚本示例 查看脚本示例。
5.1. 准备
因为 RHN Bootstrap(
rhn-bootstrap
)依赖 Red Hat Network 构架的其它组件来正确配置客户端系统,所以必须在生成脚本前准备好那些组件。下面的列表中给出了推荐的起始工具:
- 生成该脚本要调用的激活码。激活码可用来一次完成注册 Red Hat Enterprise Linux 系统、为其提供 RHN 服务级别权利并将其订阅到特定频道和系统组群这些动作。请注意:要使用激活码,您必须有 Management 权利,同时有多个激活码需要 Provisioning 权利。通过 RHN 网页(可以是代理服务器的中央 RHN 服务器,也可以是 Satellite 的完全限定域名中「系统」类别中的「激活码」页生成激活码)。有关生成和使用激活码的步骤请参考Red Hat Update Agent以及《RHN 参考指南》中有关 RHN 网页的章节。
- Red Hat 建议您使用定制的 GNU 隐私卫士(GPG)为您的 RPM 签名。使密钥可用,以便您可用在脚本中引用到它。请按照《RHN 频道管理指南》中的论述生成密钥并将其放在 RHN 服务器的
/var/www/html/pub/
目录中,请参考 第 4 章 导入定制 GPG 密钥。 - 如果您要使用该脚本部署您的 CA SSL 公共证书,请在使用
--ssl-cert
选项生成脚本的过程中将该证书或者包含该证书的软件包(RPM)放在 RHN 服务器中。详情请参考 第 3 章 SSL 构架。 - 请根据需要重新配置的系统多样性决定使用一个还是多个引导程序脚本。因为 RHN Bootstrap 提供全部重新配置选项,您可以用它来生成不同引导程序脚本来适应各种系统类型。例如:可使用
bootstrap-web-servers.sh
重新配置您的网页服务器,而bootstrap-app-servers.sh
可用来处理应用程序服务器。详情请参考 第 5.4 节 “RHN Bootstrap 选项”。
5.2. 生成
目前,所有需要的组件都已经就位,您可以使用 RHN Bootstrap 生成所需的脚本。以 root 身份登录到 RHN Satellite Server 或者 RHN Proxy Server,并执行
rhn-bootstrap
命令,命令需要附带需要的选项和数值。如果没有附加选项,那么就会在 bootstrap/
子目录中生成 bootstrap.sh
文件,其中包含从服务器中衍生出的基本数值,比如主机名、SSL 证书(如果有的话)、SSL 和 GPG 设置以及对 client-config-overrides.txt
文件的调用。
Red Hat 强烈建议您的脚本至少还要可以用下列方式使用激活码、GPG 密钥以及高级配置选项:
- 使用包含密钥的
--activation-keys
选项,请考虑 第 5.1 节 “准备” 中定义的权利要求。 - 使用
--gpg-key
选项在生成脚本的过程中识别密钥路径和文件名。或者您可使用--no-gpg
选项在客户端系统中关闭此验证。Red Hat 建议您保留此安全工具。 - 使用
--allow-config-actions
标志来启用由脚本进行的对所有客户端系统的远程配置管理。这一功能对同时重新配置多个系统非常有用。 - 使用
--allow-remote-commands
标志来启用在所有客户端系统中使用的远程脚本。和配置管理一样,这个特性也是为重新配置多个系统而设计的。
您若要完成以上操作,应使用类似如下的命令:
rhn-bootstrap --activation-keys KEY1,KEY2 \ --gpg-key /var/www/html/pub/MY_CORPORATE_PUBLIC_KEY \ --allow-config-actions \ --allow-remote-commands
很显然,要使用实际的密钥名称。有关完整的选项列表请参考 第 5.4 节 “RHN Bootstrap 选项”。
5.3. 脚本使用
最后,当您准备好脚本后就可以运行它了。登录到 RHN Satellite Server 或者 RHN Proxy Server,进入
/var/www/html/pub/bootstrap/
命令并执行以下命令,对不同的系统类型要使用不同的主机名和脚本名称:
cat bootstrap-EDITED-NAME.sh | ssh root@CLIENT_MACHINE1 /bin/bash
另外还可以使用不太安全的方法,即用
wget
或者 curl
在各个客户端系统中搜索并运行脚本。登录到各个客户机并执行以下命令,根据情况使用不同的脚本和主机名:
wget -qO - \ https://your-satellite.example.com/pub/bootstrap/bootstrap-EDITED-NAME.sh \ | /bin/bash
或者使用
curl
:
curl -Sks \ https://your-satellite.example.com/pub/bootstrap/bootstrap-EDITED-NAME.sh \ | /bin/bash
当该脚本在每个客户端系统中运行时,这些客户端系统都应该被配置为使用 RHN 服务器。
5.4. RHN Bootstrap 选项
RHN Bootstrap 为生成客户端引导程序脚本提供了很多命令行选项。虽然可在下表中找到所有这些选项的描述,您还应该确定使用
rhn-bootstrap --help
命令或者查看它的 man page 时,可在您的 RHN服务器中找到该工具的可用版本。
表 5.1. RHN Bootstrap 选项
选项 | 描述 |
---|---|
-h 、--help | 显示帮助页,其中列出了要生成引导程序脚本所需的选项列表。 |
--activation-keys=ACTIVATION_KEYS | 如在 RHN 网页中定义的,带多个使用逗号或者空格分开条目的激活码 |
--overrides=OVERRIDES | 配置覆盖文件名。默认为 client-config-overrides.txt。 |
--script=SCRIPT | 引导程序脚本文件名。默认文件名为 bootstrap.sh。 |
--hostname=HOSTNAME | 客户端系统要连接的服务器的完全限定域名(FQDN)。 |
--ssl-cert=SSL_CERT | 到您的机构公共 SSL 证书的路径,可以是一个软件包,也可以是一个原始证书。它将会被复制到 --pub-tree 选项。使用 "" 值会强制进行 --pub-tree 搜索。 |
--gpg-key=GPG_KEY | 到您的机构的 GPG 密钥路径(如果存在的话)。会将其复制到由 --pub-tree 选项指定的位置。 |
--http-proxy=HTTP_PROXY | 以 hostname:port 格式为客户端系统设定的 HTTP 代理服务器设置。使用 "" 会禁用此设置。 |
--http-proxy-username=HTTP_PROXY_USERNAME | 如果使用验证 HTTP 代理服务器,请指定用户名。"" 值会禁用此设置。 |
--http-proxy-password=HTTP_PROXY_PASSWORD | 如果使用验证 HTTP 代理服务器,请指定密码。 |
--allow-config-actions | 在此选项中的 boolean; 将系统设定为允许所有通过 RHN 的动作。这要求安装特定的 rhncfg-* 软件包,可能还需要使用激活码进行安装。 |
--allow-remote-commands | 此选项中的 boolean; 将系统设置为允许通过 RHN 使用任意远程命令。这要求安装特定的 rhncfg-* 软件包,可能还需要使用激活码进行安装。 |
--no-ssl | 不建议使用 - 此选项中的 boolean; 在客户端系统中关闭 SSL。 |
--no-gpg | 不建议使用 - 此选项中的 boolean; 在客户端系统中关闭 GPG 查看。 |
--no-up2date | 不建议使用 - 此选项中的 boolean; 确定一旦引导了系统将不运行 up2date 命令。 |
--pub-tree=PUB_TREE | 不建议修改 - CA SSL 证书和软件包所在的公共目录树、引导程序目录和脚本。默认为 /var/www/html/pub/ 。 |
--force | 不建议使用 - 此选项中的 boolean; 强制在生成引导程序脚本时忽略警告。 |
-v , --verbose | 显示详细信息。可累加,-vvv 会给出非常详细的信息。 |
第 6 章 手动修改配置脚本
本章介绍了一个不使用 RHN Bootstrap 获得启动脚本的方法。根据本章介绍的内容,您可以生成您自己的启动脚本。
所有的方法都有一个共同之处:在一个中央位置部署需要的文件,每个客户端系统都可以通过运行脚本文件来容易地获得并安装这些文件。在本章中,我们将所有的这些内容放在一起来产生一个单独的脚本。这个脚本可以在您机构内的任何系统上运行。
当我们将前面章节中介绍的命令以一个合理的顺序组合起来的时候,我们就得到了以下的脚本。请记住,Red Hat Enterprise Linux 3 或 4 中不包括
rhn_register
:
# First, install the latest client RPMs to the system. rpm -Uvh \ http://proxy-or-sat.example.com.com/pub/rhn_register-2.8.27-1.7.3.i386.rpm \ http://proxy-or-sat.example.com.com/pub/rhn_register-gnome-2.8.27-1.7.3.i386.rpm \ http://proxy-or-sat.example.com.com/pub/up2date-3.0.7-1.i386.rpm \ http://proxy-or-sat.example.com.com/pub/up2date-gnome-3.0.7-1.i386.rpm # Second, reconfigure the clients to talk to the correct server. perl -p -i -e 's/s/www\.rhns\.redhat\.com/proxy-or-sat\.example\.com/g' \ /etc/sysconfig/rhn/rhn_register \ /etc/sysconfig/rhn/up2date # Third, install the SSL client certificate for your company's # RHN Satellite Server or RHN Proxy Server. rpm -Uvh http://proxy-or-sat.example.com/pub/rhn-org-trusted-ssl-cert-*.noarch.rpm # Fourth, reconfigure the clients to use the new SSL certificate. perl -p -i -e 's/^sslCA/#sslCA/g;' \ /etc/sysconfig/rhn/up2date /etc/sysconfig/rhn/rhn_register echo "sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT" \ >> /etc/sysconfig/rhn/up2date echo "sslCACert=/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT" \ >> /etc/sysconfig/rhn/rhn_register # Fifth, download the GPG key needed to validate custom packages. wget -O - -q http://proxy-or-sat.example.com.com/pub/YOUR-RPM-GPG-KEY # Sixth, import that GPG key to your GPG keyring. rpm --import /path/to/YOUR-RPM-GPG-KEY
请记住,这里介绍的第六步只对运行 Red Hat Linux 3 或更新版本的系统有效。
这个脚本包括了一个简洁的、可重复的过程,它可以配置任何潜在的、准备在 RHN Proxy Server 或 RHN Satellite Server 中注册的 Red Hat Network 客户端系统。请记住,关键的值,如您的 RHN 服务器的 URL、其公共目录和您实际的 GPG 密钥,必须被放在这个脚本的相应位置中。另外,根据您的实际环境,可能会需要额外的信息。虽然这个脚本可能无需修改就可以正常工作,但是它应该只作为一个参考来使用。
和它的组件一样,可将此脚本放在中央位置。将此脚本放置在服务器的
/pub/
目录中,运行 wget -O-
命令,将输出导入 shell,在每个客户端中可以使用一个命令来运行整个引导过程:
wget -O - http://proxy-or-sat.example.com.com/pub/bootstrap_script | bash
警告
通过网页连接输入管道直接运行 shell 脚本显然有很多安全隐患。因此,在这种情况下,保证源服务器的安全就非常重要。
这个一行的命令可以在网络中被所有的系统调用。如果系统管理员有到所有系统的 SSH 访问权限,它可以在这些系统中重复这个简单的任务并在所有系统中远程运行这个命令。这个脚本会是已经存在的 kickstart 脚本中的 %post 部分的补充。
第 7 章 使用 Kickstart
很显然,最好是在最初建立系统时修改其配置。对于已经有效使用 kickstart 的客户,最好使用引导程序脚本完成此过程。
完成所有配置工作后,系统仍可能使用
up2date
和 rhn_register
RPM 自带的 rhnreg_ks
工具在本地 Red Hat Network 服务器进行注册。本章讨论的是如何正确使用 rhnreg_ks
注册系统。
rhnreg_ks
工具程序使用 激活码(activation keys) 来进行注册、获得权利并将系统订阅到特定的频道。要了解更多关于激活码的信息,请参阅《Red Hat Network Management 参考指南》中的Red Hat Update Agent 和 RHN 网站这两章。
以下这个带有注释的 kickstart 文件是一个如何配置一个系统使用 Red Hat Network 的示例。
# Generic 7.2 kickstart for laptops in the Widget Corporation (widgetco) # Standard kickstart options for a network-based install. For an # explanation of these options, consult the Red Hat Linux Customization # Guide. lang en_US langsupport --default en_US en_US keyboard defkeymap network --bootproto dhcp install url --url ftp://ftp.widgetco.com/pub/redhat/linux/7.2/en/os/i386 zerombr yes clearpart --all part /boot --size 128 --fstype ext3 --ondisk hda part / --size 2048 --grow --fstype ext3 --ondisk hda part /backup --size 1024 --fstype ext3 --ondisk hda part swap --size 512 --ondisk hda bootloader --location mbr timezone America/New_York rootpw --iscrypted $1$78Jnap82Hnd0PsjnC8j3sd2Lna/Hx4. auth --useshadow --enablemd5 --krb5realm .COM --krb5kdc auth.widgetco.com \ --krb5adminserver auth.widgetco.com mouse --emulthree genericps/2 xconfig --card "S3 Savage/MX" --videoram 8192 --resolution 1024x768 \ --depth 16 --defaultdesktop=GNOME --startxonboot --noprobe \ --hsync 31.5-48.5 --vsync 40-70 reboot # Define a standard set of packages. Note: Red Hat Network client # packages are found in Base. This is quite a minimal set of packages; # your mileage may vary. %packages @ Base @ Utilities @ GNOME @ Laptop Support @ Dialup Support @ Software Development @ Graphics and Image Manipulation @ Games and Entertainment @ Sound and Multimedia Support # Now for the interesting part. %post ( # Note that we run the entire %post section as a subshell for logging. # Remember that nifty one-line command for the bootstrap script that we # went through? This is an ideal place for it. And assuming that the # script has been properly configured, it should prepare the system # fully for usage of local Red Hat Network Servers. wget -O- http://proxy-or-sat.example.com/pub/bootstrap_script | /bin/bash # The following is an example of the usage of rhnreg_ks, the kickstart # utility for rhn_register. This demonstrates the usage of the # --activationkey flag, which describes an activation key. For example, # this activation key could be set up in the Web interface to join this # system to the "Laptops" group and the local Widgetco "Laptop Software" # channel. Note that this section applies only to Proxy users, as this # step is handled by the Satellite bootstrap script. # # For more information about activation keys, consult the Red Hat Network # Management Reference Guide. /usr/sbin/rhnreg_ks --activationkey=6c933ea74b9b002f3ac7eb99619d3374 # End the subshell and capture any output to a post-install log file. ) 1>/root/post_install.log 2>&1
附录 A. 引导程序脚本示例
RHN Satellite Server 安装程序生成的
/var/www/html/pub/bootstrap/bootstrap.sh
脚本文件提供了重新配置客户端系统来访问您的 RHN 服务器的功能。它通过 RHN Bootstrap 工具程序对 RHN Satellite Server 和 RHN Proxy Server 用户有效。在根据您的实际情况修改了这个脚本后,它可以在每个客户系统中运行。
查看这个示例及其注释(以“#”开始)来获得详细的信息。根据 第 5 章 使用 RHN Bootstrap 来准备这个脚本的使用。
#!/bin/bash echo "RHN Server Client bootstrap script v3.6" # This file was autogenerated. Minor manual editing of this script (and # possibly the client-config-overrides.txt file) may be necessary to complete # the bootstrap setup. Once customized, the bootstrap script can be triggered # in one of two ways (the first is preferred): # # (1) centrally, from the RHN Server via ssh (i.e., from the # RHN Server): # cd /var/www/html/pub/bootstrap/ # cat bootstrap-<edited_name>.sh | ssh root@<client-hostname> /bin/bash # # ...or... # # (2) in a decentralized manner, executed on each client, via wget or curl: # wget -qO- # https://<hostname>/pub/bootstrap/bootstrap-<edited_name>.sh \ # | /bin/bash # ...or... # curl -Sks # https://<hostname>/pub/bootstrap/bootstrap-<edited_name>.sh \ # | /bin/bash # SECURITY NOTE: # Use of these scripts via the two methods discussed is the most expedient # way to register machines to your RHN Server. Since "wget" is used # throughout the script to download various files, a "Man-in-the-middle" # attack is theoretically possible. # # The actual registration process is performed securely via SSL, so the risk # is minimized in a sense. This message merely serves as a warning. # Administrators need to appropriately weigh their concern against the # relative security of their internal network. # PROVISIONING/KICKSTART NOTE: # If provisioning a client, ensure the proper CA SSL public certificate is # configured properly in the post section of your kickstart profiles (the # RHN Satellite or hosted web user interface). # UP2DATE/RHN_REGISTER VERSIONING NOTE: # This script will not work with very old versions of up2date and # rhn_register. echo echo echo "MINOR MANUAL EDITING OF THIS FILE MAY BE REQUIRED!" echo echo "If this bootstrap script was created during the initial installation" echo "of an RHN Satellite, the ACTIVATION_KEYS, and ORG_GPG_KEY values will" echo "probably *not* be set (see below). If this is the case, please do the" echo "following:" echo " - copy this file to a name specific to its use." echo " (e.g., to bootstrap-SOME_NAME.sh - like bootstrap-web-servers.sh.)" echo " - on the website create an activation key or keys for the system(s) to" echo " be registered." echo " - edit the values of the VARIABLES below (in this script) as" echo " appropriate:" echo " - ACTIVATION_KEYS needs to reflect the activation key(s) value(s)" echo " from the website. XKEY or XKEY,YKEY" echo " - ORG_GPG_KEY needs to be set to the name of the corporate public" echo " GPG key filename (residing in /var/www/html/pub) if appropriate." echo echo "Verify that the script variable settings are correct:" echo " - CLIENT_OVERRIDES should be only set differently if a customized" echo " client-config-overrides-VER.txt file was created with a different" echo " name." echo " - ensure the value of HOSTNAME is correct." echo " - ensure the value of ORG_CA_CERT is correct." echo echo "Enable this script: comment (with #'s) this block (or, at least just" echo "the exit below)" echo exit 1 # can be edited, but probably correct (unless created during initial install): # NOTE: ACTIVATION_KEYS *must* be used to bootstrap a client machine. ACTIVATION_KEYS=insert_activation_key_here ORG_GPG_KEY=insert_org_gpg_pub_key_here # can be edited, but probably correct: CLIENT_OVERRIDES=client-config-overrides.txt HOSTNAME=your_rhn_server_host.example.com ORG_CA_CERT=RHN-ORG-TRUSTED-SSL-CERT ORG_CA_CERT_IS_RPM_YN=0 USING_SSL=1 USING_GPG=1 REGISTER_THIS_BOX=1 ALLOW_CONFIG_ACTIONS=0 ALLOW_REMOTE_COMMANDS=0 FULLY_UPDATE_THIS_BOX=1 # # ----------------------------------------------------------------------------- # DO NOT EDIT BEYOND THIS POINT ----------------------------------------------- # ----------------------------------------------------------------------------- # # an idea from Erich Morisse (of Red Hat). # use either wget *or* curl # Also check to see if the version on the # machine supports the insecure mode and format # command accordingly. if [ -x /usr/bin/wget ] ; then output=`/usr/bin/wget --no-check-certificate 2>&1` error=`echo $output | grep "unrecognized option"` if [ -z "$error" ] ; then FETCH="/usr/bin/wget -q -r -nd --no-check-certificate" else FETCH="/usr/bin/wget -q -r -nd" fi else if [ -x /usr/bin/curl ] ; then output=`/usr/bin/curl -k 2>&1` error=`echo $output | grep "is unknown"` if [ -z "$error" ] ; then FETCH="/usr/bin/curl -SksO" else FETCH="/usr/bin/curl -SsO" fi fi fi HTTP_PUB_DIRECTORY=http://${HOSTNAME}/pub HTTPS_PUB_DIRECTORY=https://${HOSTNAME}/pub if [ $USING_SSL -eq 0 ] ; then HTTPS_PUB_DIRECTORY=${HTTP_PUB_DIRECTORY} fi echo echo "UPDATING RHN_REGISTER/UP2DATE CONFIGURATION FILES" echo "-------------------------------------------------" echo "* downloading necessary files" echo " client_config_update.py..." rm -f client_config_update.py $FETCH ${HTTPS_PUB_DIRECTORY}/bootstrap/client_config_update.py echo " ${CLIENT_OVERRIDES}..." rm -f ${CLIENT_OVERRIDES} $FETCH ${HTTPS_PUB_DIRECTORY}/bootstrap/${CLIENT_OVERRIDES} if [ ! -f "client_config_update.py" ] ; then echo "ERROR: client_config_update.py was not downloaded" exit 1 fi if [ ! -f "${CLIENT_OVERRIDES}" ] ; then echo "ERROR: ${CLIENT_OVERRIDES} was not downloaded" exit 1 fi echo "* running the update scripts" if [ -f "/etc/sysconfig/rhn/rhn_register" ] ; then echo " . rhn_register config file" /usr/bin/python -u client_config_update.py /etc/sysconfig/rhn/rhn_register \ ${CLIENT_OVERRIDES} fi echo " . up2date config file" /usr/bin/python -u client_config_update.py /etc/sysconfig/rhn/up2date \ ${CLIENT_OVERRIDES} if [ ! -z "$ORG_GPG_KEY" ] ; then echo echo "* importing organizational GPG key" rm -f ${ORG_GPG_KEY} $FETCH ${HTTPS_PUB_DIRECTORY}/${ORG_GPG_KEY} # get the major version of up2date res=$(rpm -q --queryformat '%{version}' up2date | sed -e 's/\..*//g') if [ $res -eq 2 ] ; then gpg $(up2date --gpg-flags) --import $ORG_GPG_KEY else rpm --import $ORG_GPG_KEY fi fi echo echo "* attempting to install corporate public CA cert" if [ $USING_SSL -eq 1 ] ; then if [ $ORG_CA_CERT_IS_RPM_YN -eq 1 ] ; then rpm -Uvh ${HTTP_PUB_DIRECTORY}/${ORG_CA_CERT} else rm -f ${ORG_CA_CERT} $FETCH ${HTTP_PUB_DIRECTORY}/${ORG_CA_CERT} mv ${ORG_CA_CERT} /usr/share/rhn/ fi fi echo echo "REGISTRATION" echo "------------" # Should have created an activation key or keys on the RHN Server's # website and edited the value of ACTIVATION_KEYS above. # # If you require use of several different activation keys, copy this file and # change the string as needed. # if [ -z "$ACTIVATION_KEYS" ] ; then echo "*** ERROR: in order to bootstrap RHN clients, an activation key or keys" echo " must be created in the RHN web user interface, and the" echo " corresponding key or keys string (XKEY,YKEY,...) must be mapped to" echo " the ACTIVATION_KEYS variable of this script." exit 1 fi if [ $REGISTER_THIS_BOX -eq 1 ] ; then echo "* registering" /usr/sbin/rhnreg_ks --force --activationkey "$ACTIVATION_KEYS" echo echo "*** this system should now be registered, please verify ***" echo else echo "* explicitely not registering" fi echo echo "OTHER ACTIONS" echo "------------------------------------------------------" if [ $FULLY_UPDATE_THIS_BOX -eq 1 ] ; then echo "up2date up2date; up2date -p; up2date -uf (conditional)" else echo "up2date up2date; up2date -p" fi echo "but any post configuration action can be added here. " echo "------------------------------------------------------" if [ $FULLY_UPDATE_THIS_BOX -eq 1 ] ; then echo "* completely updating the box" else echo "* ensuring up2date itself is updated" fi /usr/sbin/up2date up2date /usr/sbin/up2date -p if [ $FULLY_UPDATE_THIS_BOX -eq 1 ] ; then /usr/sbin/up2date -uf fi echo "-bootstrap complete-"
附录 B. 修订记录
修订历史 | |||
---|---|---|---|
修订 1-3.400 | 2013-10-31 | Rüdiger Landmann | |
| |||
修订 1-3 | 2012-07-18 | Anthony Towns | |
| |||
修订 1-7 | Fri Feb 27 2009 | ||
|
索引
符号
- --configure
- 使用,up2date --configure 选项
- 客户端应用程序
- 客户端配置
- Red Hat Update Agent ,up2date --configure 选项
A
- activation keys
- 注册,使用激活码注册
B
- bootstrap.sh
- 准备及使用,使用 RHN Bootstrap
- 示例文件,引导程序脚本示例
C
- client applications
- 配置,配置客户端应用程序
- configuration
- 手动,手动更新配置文件
- 服务器故障切换,使用服务器故障切换
- 脚本完成,手动修改配置脚本
G
- GPG 密钥
- 导入,导入定制 GPG 密钥
K
- kickstart
- 使用,使用 Kickstart
R
- Red Hat Network Alert Notification Tool
- 配置 Satellite,使用 Satellite 配置 Red Hat Network Alert Notification Tool
- Red Hat Update Agent
- 配置为使用 RHN Proxy Server 或者 RHN Satellite Server,手动更新配置文件
- RHN Bootstrap
- 使用,使用 RHN Bootstrap
- 使用脚本,脚本使用
- 准备,准备
- 命令行选项,RHN Bootstrap 选项
- 生成脚本,生成
- RHN SSL Maintenance Tool
- rhn-ssl-tool ,RHN SSL Maintenance Tool
- 生成 CA,生成认证机构 SSL 密钥对
- 生成服务器证书,生成网页服务器 SSL 密钥组
- 生成解释,创建 SSL 详解
- 选项,RHN SSL Maintenance Tool 选项
- rhn-ssl-tool
- RHN SSL Maintenance Tool ,RHN SSL Maintenance Tool
- 生成 CA,生成认证机构 SSL 密钥对
- 生成服务器证书,生成网页服务器 SSL 密钥组
- 生成解释,创建 SSL 详解
- 选项,RHN SSL Maintenance Tool 选项
S
- SSL 证书
- 安装,在客户端中部署 CA SSL 公共证书
- 生成,RHN SSL Maintenance Tool
- 配置,配置客户端系统
- SSL(安全套接字层)
- 简介,SSL 简介
法律通告
Copyright © 2010 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.