第 8 章 使用 RHEL 系统角色请求证书

通过证书系统角色,您可以使用 Red Hat Ansible Engine 发布和管理证书。

本章涵盖了以下主题:

8.1. 证书系统角色

通过使用证书系统角色,您可以使用 Red Hat Ansible Engine 管理并更新 TLS 和 SSL 证书。

该角色使用 certmonger 作为证书提供商,目前支持发布和更新自签名证书,并使用 IdM 集成证书颁发机构(CA)。

您可以将 Ansible playbook 中的以下变量与证书系统角色结合使用:

  • certificate_wait 指定任务是否应该等待签发证书。
  • 代表要发布的每个证书及其参数的 certificate_requests

其它资源

  • 有关 certificate_requests 变量使用的参数的详情,以及 certificate 系统角色的附加信息,请参阅该 /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 文件。
  • 有关 RHEL 系统角色以及如何应用它们的详情,请参阅 RHEL 系统角色入门

8.2. 使用证书系统角色请求新的自签名证书

使用证书系统角色,您可以使用 Red Hat Ansible Engine 发布自签名证书。

此过程使用 certmonger 供应商并通过 getcert 命令请求证书。

注意

默认情况下,在证书过期前 certmonger 自动尝试更新该证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设置为no来禁用此功能。

先决条件

  • 您已在要运行 playbook 的系统中安装了 Red Hat Ansible Engine。

    注意

    您不必在要部署 certificate 解决方案的系统中安装 Ansible。

  • 已安装该系统中要运行 playbook 的 rhel-system-roles 软件包。

    有关 RHEL 系统角色以及如何应用它们的详情,请参阅 RHEL 系统角色入门

流程

  1. 可选: 创建一个清单文件,例如 inventory.file:

    $ touch inventory.file
  2. 打开清单文件并定义要请求证书的主机,例如:

    [webserver]
    server.idm.example.com
  3. 创建 playbook 文件,例如 request-certificate.yml:

    • 设置 hosts 为包含您要请求证书的主机,如 webserver
    • certificate_requests 变量设置为包含以下内容:

      • 将参数设置 name 为证书的所需名称,如 mycert
      • dns 参数设置为证书中包含的域,如 *.example.com
      • 将参数 ca 设置为 self-sign
    • roles 下设置 rhel-system-roles.certificate 角色。

      这是本例的 playbook 文件:

      ---
      - hosts: webserver
      
        vars:
          certificate_requests:
            - name: mycert
              dns: *.example.com
              ca: self-sign
      
        roles:
          - rhel-system-roles.certificate
  4. 保存该文件。
  5. 运行 playbook:

    $ ansible-playbook -i inventory.file request-certificate.yml

其它资源

  • 有关 certificate_requests 变量使用的参数的详情,以及 certificate 系统角色的附加信息,请参阅该 /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 文件。
  • 有关 ansible-playbook 命令的详情请参考 ansible-playbook(1) man page。

8.3. 使用证书系统角色从 IdM CA 请求一个新证书

使用证书系统角色时,您可以使用 Red Hat Ansible Engine 在使用带有集成证书颁发机构(CA)的 IdM 服务器时,使用 Red Hat Ansible Engine 发布证书。因此,在使用 IdM 作为 CA 时,您可以迅速、持续地管理多个系统的证书信任链。

此过程使用 certmonger 供应商并通过 getcert 命令请求证书。

注意

默认情况下,在证书过期前 certmonger 自动尝试更新该证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设置为no来禁用此功能。

先决条件

  • 您已在要运行 playbook 的系统中安装了 Red Hat Ansible Engine。

    注意

    您不必在要部署 certificate 解决方案的系统中安装 Ansible。

  • 已安装该系统中要运行 playbook 的 rhel-system-roles 软件包。

    有关 RHEL 系统角色以及如何应用它们的详情,请参阅 RHEL 系统角色入门

流程

  1. 可选: 创建一个清单文件,例如 inventory.file:

    $ touch inventory.file
  2. 打开清单文件并定义要请求证书的主机,例如:

    [webserver]
    server.idm.example.com
  3. 创建 playbook 文件,例如 request-certificate.yml:

    • 设置 hosts 为包含您要请求证书的主机,如 webserver
    • certificate_requests 变量设置为包含以下内容:

      • 将参数设置 name 为证书的所需名称,如 mycert
      • dns 参数设置为证书中包含的域,如 www.example.com
      • principal 参数设置为特定的 Kerberos 主体,如 HTTP/www.example.com@EXAMPLE.COM
      • 将参数 ca 设置为 ipa
    • roles 下设置 rhel-system-roles.certificate 角色。

      这是本例的 playbook 文件:

      ---
      - hosts: webserver
        vars:
          certificate_requests:
            - name: mycert
              dns: www.example.com
              principal: HTTP/www.example.com@EXAMPLE.COM
              ca: ipa
      
        roles:
          - rhel-system-roles.certificate
  4. 保存该文件。
  5. 运行 playbook:

    $ ansible-playbook -i inventory.file request-certificate.yml

其它资源

  • 有关 certificate_requests 变量使用的参数的详情,以及 certificate 系统角色的附加信息,请参阅该 /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 文件。
  • 有关 ansible-playbook 命令的详情请参考 ansible-playbook(1) man page。

8.4. 指定在使用证书系统角色前或之后要运行的命令

使用证书系统角色,您可以使用 Red Hat Ansible Engine 在签发或更新证书之前和之后执行命令。

在以下示例中,管理员确保在为 www.example.com 发布或更新自签名证书前停止 httpd 服务,然后再重启该服务。

注意

默认情况下,在证书过期前 certmonger 自动尝试更新该证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设置为no来禁用此功能。

先决条件

  • 您已在要运行 playbook 的系统中安装了 Red Hat Ansible Engine。

    注意

    您不必在要部署 certificate 解决方案的系统中安装 Ansible。

  • 已安装该系统中要运行 playbook 的 rhel-system-roles 软件包。

    有关 RHEL 系统角色以及如何应用它们的详情,请参阅 RHEL 系统角色入门

流程

  1. 可选: 创建一个清单文件,例如 inventory.file:

    $ touch inventory.file
  2. 打开清单文件并定义要请求证书的主机,例如:

    [webserver]
    server.idm.example.com
  3. 创建 playbook 文件,例如 request-certificate.yml:

    • 设置 hosts 为包含您要请求证书的主机,如 webserver
    • certificate_requests 变量设置为包含以下内容:

      • 将参数设置 name 为证书的所需名称,如 mycert
      • dns 参数设置为证书中包含的域,如 www.example.com
      • ca 参数设置为您要用来发布证书的 CA,如 self-sign
      • run_before 参数设置为在签发或续订证书前要执行的命令,如 systemctl stop httpd.service
      • run_after 参数设置为发布或续订这个证书后要执行的命令,如 systemctl start httpd.service
    • roles 下设置 rhel-system-roles.certificate 角色。

      这是本例的 playbook 文件:

      ---
      - hosts: webserver
        vars:
          certificate_requests:
            - name: mycert
              dns: www.example.com
              ca: self-sign
              run_before: systemctl stop httpd.service
              run_after: systemctl start httpd.service
      
        roles:
          - linux-system-roles.certificate
  4. 保存该文件。
  5. 运行 playbook:

    $ ansible-playbook -i inventory.file request-certificate.yml

其它资源

  • 有关 certificate_requests 变量使用的参数的详情,以及 certificate 系统角色的附加信息,请参阅该 /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 文件。
  • 有关 ansible-playbook 命令的详情请参考 ansible-playbook(1) man page。

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。