第 22 章 使用 Ansible 管理 IdM 证书

您可以使用 ansible-freeipa ipacert 模块为身份管理(IdM)用户、主机和服务请求、撤销和检索 SSL 证书。您也可以恢复已被搁置的证书。

22.1. 使用 Ansible 为 IdM 主机、服务和用户请求 SSL 证书

您可以使用 ansible-freeipa ipacert 模块为身份管理(IdM)用户、主机和服务请求 SSL 证书。然后,他们可以使用这些证书向 IdM 进行身份验证。

完成此流程,使用 Ansible playbook 从 IdM 证书颁发机构(CA)请求 HTTP 服务器的证书。

先决条件

  • 在控制节点上:

    • 您使用 Ansible 版本 2.14 或更高版本。
    • 您已安装了 ansible-freeipa 软件包。
    • 您已在 ~/MyPlaybooks/ 目录中创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件
    • 您已将 ipaadmin_password 存储在 secret.yml Ansible vault 中。
  • 您的 IdM 部署有一个集成的 CA。

流程

  1. 为您的用户、主机或服务生成一个证书签名请求(CSR)。例如,要使用 openssl 工具为运行在 client.idm.example.com 上的 HTTP 服务生成一个 CSR,请输入:

    # openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout new.key -out new.csr -subj '/CN=client.idm.example.com,O=IDM.EXAMPLE.COM'

    因此,CSR 存储在 new.csr 中。

  2. 使用以下内容创建 Ansible playbook 文件 request-certificate.yml

    ---
    - name: Playbook to request a certificate
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      - name: Request a certificate for a web server
        ipacert:
          ipaadmin_password: "{{ ipaadmin_password }}"
          state: requested
          csr: |
            -----BEGIN CERTIFICATE REQUEST-----
            MIGYMEwCAQAwGTEXMBUGA1UEAwwOZnJlZWlwYSBydWxlcyEwKjAFBgMrZXADIQBs
            HlqIr4b/XNK+K8QLJKIzfvuNK0buBhLz3LAzY7QDEqAAMAUGAytlcANBAF4oSCbA
            5aIPukCidnZJdr491G4LBE+URecYXsPknwYb+V+ONnf5ycZHyaFv+jkUBFGFeDgU
            SYaXm/gF8cDYjQI=
            -----END CERTIFICATE REQUEST-----
          principal: HTTP/client.idm.example.com
        register: cert

    将证书请求替换为 new.csr 中的 CSR。

  3. 请求证书:

    $ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/request-certificate.yml