第7章 RHEL システムロールを使用した CA からの証明書の要求および自己署名証明書の作成


Web サーバーなどの多くのサービスは、TLS を使用してクライアントとの接続を暗号化します。これらのサービスには、秘密鍵と証明書、および証明書に署名する信頼できる認証局 (CA) が必要です。

certificate RHEL システムロールを使用すると、管理対象ノードでの秘密鍵の生成を自動化できます。さらに、このロールは、証明書署名要求 (CSR) を CA に送信するように certmonger サービスを設定し、証明書が期限切れになる前にサービスが自動的に証明書を更新します。

テスト目的の場合は、certificate ロールを使用して、CA から署名済み証明書を要求する代わりに、自己署名証明書を作成できます。

7.1. certificate RHEL システムロールを使用した IdM CA からの新しい証明書の要求

Red Hat Enterprise Linux ホストが RHEL Identity Management (IdM) 環境のメンバーである場合、IdM 認証局 (CA) から TLS 証明書を要求し、このホストで実行されるサービスでその証明書を使用できます。certificate RHEL システムロールを使用すると、秘密鍵を作成するプロセスと、certmonger サービスが CA から証明書を要求するプロセスを自動化できます。また、certmonger は、デフォルトで証明書の有効期限が切れる前に更新を行います。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • 管理対象ノードが IdM ドメインのメンバーであり、そのドメインで IdM 統合 CA を使用している。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/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

    サンプル Playbook で指定されている設定は次のとおりです。

    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 コンテキストは、selinux RHEL システムロールを使用して管理できます。

    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 が実行するコマンドを定義します。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.certificate/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

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

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ 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/ ディレクトリー
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.