19.2. 使用 certificate RHEL 系统角色请求一个新的自签名证书


如果需要测试环境的 TLS 证书,您可以使用自签名证书。通过使用 证书 RHEL 系统角色,您可以自动创建私钥并让 certmonger 服务创建自签名证书。默认情况下,certmonger 会在证书过期前更新证书。

先决条件

流程

  1. 创建一个包含以下内容的 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 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 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/ 目录
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.