28.9. Ansible을 사용하여 통합 eDNS 및 외부 루트 CA로 IdM 서버 설치


Ansible을 사용하여 DNS 트래픽을 암호화하여 DNS-over-TLS(DoT)와 외부 루트 CA를 사용하여 IdM(Identity Management) 서버를 설치합니다.

중요

적용 되거나 완화 된 정책을 선택할 수 있습니다. 기본적으로 설치 프로그램은 완화 정책을 사용하여 DoT를 시도하지만 보안 연결을 설정할 수 없는 경우 암호화되지 않은 표준 DNS로 대체를 허용합니다. 강제 정책을 적용하려면 ipaserver_dns_policy 변수를 Ansible 플레이북의 vars 섹션에 적용 하도록 설정합니다.

통합 IdM 인증 기관(CA)에서 발급한 인증서를 사용하거나 외부 CA에서 발급한 사용자 정의 인증서를 제공할 수 있습니다. 인증서를 제공하지 않으면 IdM CA에서 설치 중에 DoT 인증서를 자동으로 발행합니다.

자세한 내용은 시스템의 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-server.md 를 참조하십시오.

사전 요구 사항

프로세스

  1. 선택 사항: 외부 인증 기관에서 발급한 DoT에 대해 사용자 정의 PEM 형식의 인증서 및 키를 사용하려면 다음을 수행합니다.

    1. IdM 서버를 설치할 호스트에 SSH를 실행합니다.

      $ 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 컨트롤러에서 외부 CA를 사용하여 IdM 서버를 설치하는 지침과 함께 install-server-external-ca-step1.yml 이라는 플레이북 파일을 생성합니다.

    ---
    - 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

    외부 인증 기관에서 발급한 사용자 지정 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 플레이북을 실행합니다.

    $ 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 인증서를 컨트롤러 파일 시스템에 배치합니다.
  6. 다음 콘텐츠를 사용하여 IdM 서버 설치의 두 번째 단계에 대해 새 Ansible 플레이북(예: 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 플레이북을 실행합니다.

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

문제 해결

  1. IdM 서버에 SSH 를 실행합니다.

    # 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

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동