21장. RHEL 시스템 역할을 사용하여 CA에서 인증서 요청 및 자체 서명된 인증서 생성


웹 서버와 같은 많은 서비스는 TLS를 사용하여 클라이언트와의 연결을 암호화합니다. 이러한 서비스에는 개인 키와 인증서, 인증서에 서명하는 신뢰할 수 있는 CA(인증 기관)가 필요합니다.

인증서 RHEL 시스템 역할을 사용하면 관리형 노드에서 개인 키 생성을 자동화할 수 있습니다. 또한 이 역할은 CSR(인증서 서명 요청)을 CA로 전송하도록 certmonger 서비스를 구성하고 서비스가 만료되기 전에 인증서를 자동으로 갱신합니다.

테스트를 위해 CA에서 서명된 인증서 를 요청하는 대신 인증서 역할을 사용하여 자체 서명된 인증서를 생성할 수 있습니다.

21.1. 인증서 RHEL 시스템 역할을 사용하여 IdM CA에서 새 인증서 요청

Red Hat Enterprise Linux 호스트가 RHEL IdM(Identity Management) 환경의 멤버인 경우 IdM 인증 기관(CA)에서 TLS 인증서를 요청하고 이 호스트에서 실행되는 서비스에서 사용할 수 있습니다. 인증서 RHEL 시스템 역할을 사용하면 개인 키 생성 프로세스를 자동화하고 certmonger 서비스가 CA에서 인증서를 요청하도록 할 수 있습니다. 기본적으로 certmonger 는 만료되기 전에 인증서를 갱신합니다.

사전 요구 사항

  • 컨트롤 노드 및 관리형 노드를 준비했습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • 관리형 노드는 IdM 도메인의 멤버이며 도메인은 IdM 통합 CA를 사용합니다.

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/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: ipa
                dns: www.example.com
                principal: HTTP/www.example.com@EXAMPLE.COM
                run_before: systemctl stop httpd.service
                run_after: systemctl start httpd.service

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    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: ipa
    역할이 IdM CA의 인증서를 요청하도록 정의합니다.
    dns: <hostname_or_list_of_hostnames>
    발행된 인증서의 주체 대체 이름(SAN) 필드에 포함된 호스트 이름을 설정합니다. 와일드카드(*)를 사용하거나 YAML 목록 형식으로 여러 이름을 지정할 수 있습니다.
    principal: <kerberos_principal>
    선택 사항: 인증서에 포함해야 하는 Kerberos 주체를 설정합니다.
    run_before: <command>
    선택 사항: CA에서 인증서를 요청하기 전에 certmonger 가 실행해야 하는 명령을 정의합니다.
    run_after: <command>
    선택 사항: CA에서 발급된 인증서를 받은 후 certmonger 가 실행해야 하는 명령을 정의합니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

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

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ 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 '20240918142211':
            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: IPA
            issuer: CN=Certificate Authority,O=EXAMPLE.COM
            subject: CN=www.example.com
            issued: 2024-09-18 16:22:11 CEST
            expires: 2025-09-18 16:22:10 CEST
            dns: www.example.com
            key usage: digitalSignature,keyEncipherment
            eku: id-kp-serverAuth,id-kp-clientAuth
            pre-save command: systemctl stop httpd.service
            post-save command: systemctl start httpd.service
            track: yes
            auto-renew: yes

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 파일
  • /usr/share/doc/rhel-system-roles/certificate/ directory
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.