第 26 章 从 CA 请求证书,并使用 RHEL 系统角色创建自签名证书
许多服务,如 Web 服务器,都使用 TLS 加密与客户端的连接。这些服务需要一个私钥和证书,以及签名证书的可信证书颁发机构(CA)。
通过使用 certificate
RHEL 系统角色,您可以在受管节点上自动生成私钥。另外,角色将 certmonger
服务配置为向 CA 发送证书签名请求(CSR),且服务会在证书过期前自动更新证书。
出于测试目的,您可以使用 certificate
角色创建自签名证书,而不是从 CA 请求一个签名证书。
26.1. 使用 certificate RHEL 系统角色从 IdM CA 请求一个新证书 复制链接链接已复制到粘贴板!
如果 Red Hat Enterprise Linux 主机是 RHEL 身份管理(IdM)环境的成员,则您可以从 IdM 证书颁发机构(CA)请求 TLS 证书,并在此主机上运行的服务中使用它们。通过使用 certificate
RHEL 系统角色,您可以自动化创建私钥的过程,并让 certmonger
服务从 CA 请求一个证书。默认情况下,certmonger
也将在证书过期前更新证书。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 受管节点是 IdM 域的成员,域使用集成了 IdM 的 CA。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
name: <path_or_file_name>
定义生成的私钥和证书文件的名称或路径:
-
如果将变量设置为
web-server
,则角色会将私钥存储在/etc/pki/tls/private/web-server.key
中,并将证书存储在/etc/pki/tls/certs/web-server.crt
文件中。 如果将变量设置为一个路径,如
/tmp/web-server
,则角色会将私钥存储在/tmp/web-server.key
中,并将证书存储在/tmp/web-server.crt
文件中。请注意,您使用的目录必须设置了
cert_t
SELinux 上下文。您可以使用selinux
RHEL 系统角色管理 SELinux 上下文。
-
如果将变量设置为
ca: ipa
- 定义角色从 IdM CA 请求证书。
dns: <hostname_or_list_of_hostnames>
-
设置发布的证书中的 Subject Alternative Names (SAN)字段包含的主机名。您可以使用通配符(
*
)或以 YAML 列表格式指定多个名称。 principal: <kerberos_principal>
- 可选:设置应该在证书中包含的 Kerberos 主体。
run_before: <command>
-
可选:定义
certmonger
在从 CA 请求证书之前应执行的命令。 run_after: <command>
-
可选:定义
certmonger
在从 CA 收到发布的证书后应该执行的命令。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
文件。验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出
certmonger
服务管理的证书:Copy to Clipboard Copied! Toggle word wrap Toggle overflow