28.9. 使用 Ansible 安装带有集成 eDNS 和外部 root CA 的 IdM 服务器


使用 Ansible 加密 DNS 流量,安装带有 DNS-over-TLS (DoT)和外部 root CA 的身份管理(IdM)服务器。

重要

您可以选择 enforcedrelaxed 策略。默认情况下,安装程序使用 relaxed 策略,它尝试 DoT,但如果无法建立安全连接,则允许回退到标准未加密的 DNS。要应用 强制 策略,请将 ipaserver_dns_policy 变量设置为 Ansible playbook 的 vars 部分中 强制执行 的。

您可以使用集成 IdM 证书颁发机构(CA)发布的证书,或者提供一个外部 CA 发布的自定义证书。如果没有提供证书,IdM CA 会在安装过程中自动发布一个 DoT 证书。

如需更多信息,请参阅系统中的 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-server.md

先决条件

流程

  1. 可选:对于外部证书颁发机构发布的 DoT 使用自定义 PEM 格式的证书和密钥:

    1. SSH 到您要安装 IdM 服务器的主机:

      $ ssh root@server.idm.example.com
    2. 创建两个文件,并为 命名 守护进程分配所有权:

      # openssl req \
        -newkey rsa:2048 \
        -nodes \
        -keyout /etc/pki/tls/certs/privkey.pem \
        -x509 \
        -days 36500 \
        -out /etc/pki/tls/certs/certificate.pem \
        -subj "/C=<country_code>/ST=<state>/L=<location>/O=<organization>/OU=<organizational_unit>/CN=<idm_server_fqdn>/emailAddress=<email>" && \
        chown named:named /etc/pki/tls/certs/privkey.pem /etc/pki/tls/certs/certificate.pem
    3. 退出 IdM 服务器上的 SSH 会话:

      # exit
  2. 在 Ansible 控制器上,创建一个名为 install-server-external-ca-step1.yml 的 playbook 文件,其中包含安装带有外部 CA 的 IdM 服务器的说明:

    ---
    - name: Playbook to configure IPA server Step 1: generate CSR for IdM external CA setup
      hosts: ipaserver
      become: true
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      vars:
        ipaserver_domain: idm.example.com
        ipaserver_realm: IDM.EXAMPLE.COM
        ipaserver_hostname: server.idm.example.com
        ipaadmin_password: "{{ vault_admin_password }}"
        ipadm_password: "{{ vault_dm_password }}"
        ipaserver_setup_dns: true
        ipaserver_dot_forwarders:
          - "<server_ip>#<dns_server_hostname>"
        ipaserver_external_ca: true
        ipaserver_dns_over_tls: true
        ipaserver_no_dnssec_validation: true
        ipaserver_auto_reverse: true
    
      roles:
        - role: freeipa.ansible_freeipa.ipaserver
    
      post_tasks:
      - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}"
        fetch:
          src: /root/ipa.csr
          dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}"
          flat: true

    如果您使用由外部证书颁发机构发布的 DoT 的自定义 PEM 格式证书和密钥,请在 vars 部分中添加以下内容:

    ipaserver_dns_over_tls_cert: /etc/pki/tls/certs/certificate.pem
    ipaserver_dns_over_tls_key: /etc/pki/tls/certs/privkey.pem
  3. 使用安装第一步的说明运行 Ansible playbook:

    $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-external-ca-step1.yml
  4. 在控制器上找到 ipa.csr 证书签名请求文件,并提交给外部的 CA。
  5. 将外部 CA 和 CA 证书链签名的 IdM CA 证书放在控制器文件系统中,以便下一步中的 playbook 可以找到它。
  6. 为 IdM 服务器安装的第二步创建一个新的 Ansible playbook,如 install-server-external-ca-step2.yml

    ---
    - name: Playbook to configure IdM server Step 2: import certificates and finalize installation
      hosts: ipaserver
      become: true
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      vars:
        ipaserver_domain: idm.example.com
        ipaserver_realm: IDM.EXAMPLE.COM
        ipaserver_hostname: server.idm.example.com
        ipaadmin_password: "{{ vault_admin_password }}"
        ipadm_password: "{{ vault_dm_password }}"
        ipaserver_setup_dns: true
        ipaserver_dot_forwarders:
          - "<server_ip>#<dns_server_hostname>"
        ipaserver_external_ca: true
        ipaserver_dns_over_tls: true
        ipaserver_no_dnssec_validation: true
        ipaserver_auto_reverse: true
        ipaserver_external_cert_files:
          - servercert20240601.pem
          - cacert.pem
    
      pre_tasks:
      - name: Copy "{{ groups.ipaserver[0] }}-{{ item }}" to "/root/{{ item }}" on node
        ansible.builtin.copy:
          src: "{{ groups.ipaserver[0] }}-{{ item }}"
          dest: "/root/{{ item }}"
          force: true
        with_items:
        - servercert20240601.pem
        - cacert.pem
    
      roles:
      - role: freeipa.ansible_freeipa.ipaserver
        state: present
  7. 使用安装最后一步的说明运行 Ansible playbook:

    $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-external-ca-step2.yml

故障排除

  1. SSH 到 IdM 服务器:

    # ssh root@server.idm.example.com
  2. unbound 服务启用详细日志记录:

    # unbound-control verbosity 3
  3. 重启 unbound 服务以应用更新的配置:

    # systemctl restart unbound
  4. 监控 unbound 服务的实时日志:

    $ journalctl -u unbound -f
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部