21.2. 使用 certificate RHEL 系统角色请求一个新的自签名证书
如果需要测试环境的 TLS 证书,您可以使用自签名证书。通过使用 证书
RHEL 系统角色,您可以自动创建私钥并让 certmonger
服务创建自签名证书。默认情况下,certmonger
会在证书过期前更新证书。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: rhel-system-roles.certificate vars: certificate_requests: - name: web-server ca: self-sign dns: test.example.com
示例 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: self-sign
- 定义该角色创建了自签名证书。
dns: <hostname_or_list_of_hostnames>
-
设置发布的证书中的 Subject Alternative Names (SAN)字段所包含的主机名。您可以使用通配符(
*
)或以 YAML 列表格式指定多个名称。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
文件。验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
列出
certmonger
服务管理的证书:# ansible managed-node-01.example.com -m command -a 'getcert list' ... Number of certificates and requests being tracked: 1. Request ID '20240918133610': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/web-server.key' certificate: type=FILE,location='/etc/pki/tls/certs/web-server.crt' CA: local issuer: CN=c32b16d7-5b1a4c5a-a953a711-c3ca58fb,CN=Local Signing Authority subject: CN=test.example.com issued: 2024-09-18 15:36:10 CEST expires: 2025-09-18 15:36:09 CEST dns: test.example.com key usage: digitalSignature,keyEncipherment eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: post-save command: track: yes auto-renew: yes
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
文件 -
/usr/share/doc/rhel-system-roles/certificate/
目录