13.5. LDAP データベースの設定


Certificate System は、受信した要求に応じて証明書管理機能およびキー管理機能を実行します。これらの機能には、以下が含まれます。
  • 証明書要求の保存および取得
  • 証明書レコードの保存および取得
  • CRL の保存
  • ACL の保存
  • 特権ユーザーとロール情報の保存
  • エンドユーザーの暗号化秘密鍵レコードの保存および取得
これらの機能を満たすために、Certificate System は 内部データベース または ローカルデータベース と呼ばれる Red Hat Directory Server に組み込まれています。Directory Server は、Certificate System 設定の一部として参照されます。Certificate System サブシステムが設定されている場合は、新しいデータベースが Directory Server 内に作成されます。このデータベースは、Certificate System インスタンスのみが組み込みデータベースとして使用し、Directory Server に同梱されているディレクトリー管理ツールを使用して管理できます。
Certificate System インスタンスデータベースは、serverRoot/slapd-DS_name/db/ 内の他のディレクトリーサーバーデータベースと一緒に一覧表示されます。これらのデータベースは、/etc/pki/default.cfg ファイル内の指定されたサブシステムセクションの下の変数 pki_ds_database の値によって決定される値によって名前が付けられます (デフォルトでは CS_instance_name-CACS_instance_name-KRACS_instance_name-OCSPCS_instance_name-TKS、および CS_instance_name-TPS)。これは、インスタンス設定時に指定されるデフォルトの形式です。たとえば、証明書マネージャーが ca1 の場合、データベース名は ca1-CA になります。同様に、データベース名は、/etc/pki/default.cfg ファイル内の指定されたサブシステムセクション下の pki_ds_base_dn の値によって決定されます (デフォルトでは o=CS_instance_name-CA、o=CS_instance_name-KRA、o=CS_instance_name-OCSP、o=CS_instance_name-TKS、または o=CS_instance_name-TPS)。
サブシステムはデータベースを使用して異なるオブジェクトを保存します。証明書マネージャーはすべてのデータ、証明書要求、証明書、CRL、および関連情報を格納しますが、KRA はキーレコードと関連データのみを格納します。
警告
内部データベーススキーマは、Certificate System データのみを格納するよう設定されます。変更を加えたり、他の LDAP ディレクトリーを使用するように Certificate System を設定したりしないでください。これを行うと、データが失われる場合があります。
また、他の目的では内部 LDAP データベースを使用しないでください。

13.5.1. 内部データベース設定の変更

サブシステムインスタンスが内部データベースとして使用する Directory Server インスタンスを変更するには、以下を実行します。
  1. サブシステム管理コンソールにログインします。
    pkiconsole https://server.example.com:admin_port/subsystem_type
  2. Configuration タブで Internal Database タブを選択します。
  3. ホスト名、ポート、およびバインド DN フィールドを変更して、Directory Server インスタンスを変更します。
    ホスト名は、Directory Server がインストールされているマシンの完全修飾ホスト名です (certificates.example.com など)。Certificate System はこの名前を使用してディレクトリーにアクセスします。
    デフォルトでは、内部データベースとして使用されている Directory Server インスタンスのホスト名は、実際のホスト名ではなく、localhost と表示されます。これは、localhost のサーバーはローカルマシンからしかアクセスできないため、内部データベースがシステムの外部に表示されないようにするために行われます。したがって、デフォルト設定では、ローカルマシンからこの Directory Server インスタンスに接続する責任が最小限に抑えられます。
    ホスト名は、内部データベースの可視性がローカルサブネットに制限されている場合は、localhost 以外のものに変更できます。たとえば、Certificate System と Directory Server が負荷分散のために別のマシンにインストールされている場合は、Directory Server がインストールされているマシンのホスト名を指定します。
    ポート番号は、Directory Server と SSL 以外の通信に使用される TCP/IP ポートです。
    DN は Directory Manager DN である必要があります。Certificate System サブシステムは、ディレクトリーツリーにアクセスしてディレクトリーと通信する際にこの DN を使用します。
  4. Save をクリックします。
    設定が変更されます。変更にサーバーの再起動が必要な場合は、プロンプトとそのメッセージが表示されます。その場合には、サーバーを再起動します。

13.5.2. Directory Server で証明書システムが発行する証明書の使用

証明書システムのインストール時に Directory Server への暗号化された接続を使用するには、外部の認証局 (CA) によって発行された証明書または自己署名証明書のいずれかを使用する必要がありました。ただし、証明書システム CA を設定した後、管理者は、証明書システムが発行した証明書に置き換えることがよくあります。
Directory Server が使用する TLS 証明書を、Certificate System が発行した証明書に置き換えるには、次のコマンドを実行します。
  1. Directory Server ホストで以下を行います。
    1. Directory Server インスタンスを停止します。
      # systemctl stop dirsrv@instance_name
    2. Certificate Signing Request (CSR) を生成します。
      たとえば、2048 ビット RSA 暗号化を使用し、これを ~/ds.csr ファイルに保存する CSR を生成するには、以下を実行します。
      # PKCS10Client -d /etc/dirsrv/slapd-instance_name/ -p password -a rsa -l 2048 -o ~/ds.csr -n "CN=$HOSTNAME"
      PKCS10Client: Debug: got token.
      PKCS10Client: Debug: thread token set.
      PKCS10Client: token Internal Key Storage Token logged in...
      PKCS10Client: key pair generated.
      PKCS10Client: CertificationRequest created.
      PKCS10Client: b64encode completes.
      Keypair private key id: -3387b397ebe254b91c5d6c06dc36618d2ea8b7e6
      
      -----BEGIN CERTIFICATE REQUEST-----
      ...
      -----END CERTIFICATE REQUEST-----
      PKCS10Client: done. Request written to file: ~/ds.csr
    3. Directory Server インスタンスを起動し、CA が要求の処理できるようにします。
      # systemctl start dirsrv@instance_name
    4. CSR を Certificate System の CA に送信します。以下に例を示します。
      # pki -d /etc/dirsrv/slapd-instance_name/ ca-cert-request-submit --profile caServerCert --csr-file ~/ds.csr
      -----------------------------
      Submitted certificate request
      -----------------------------
        Request ID: 13
        Type: enrollment
        Request Status: pending
        Operation Result: success
  2. Certificate System ホストで以下を行います。
    1. CA エージェント証明書を Network Security Services (NSS) データベースにインポートして、CMC フル要求を署名します。
      1. 新しいディレクトリーを作成します。以下に例を示します。
        # mkdir ~/certs_db/
      2. 新たに作成したディレクトリーでデータベースを初期化します。
        # certutil -N -d ~/certs_db/
      3. CA 署名証明書のシリアル番号を表示します。
        # pki -p 8080 ca-cert-find --name "CA Signing Certificate"
        ---------------
        1 entries found
        ---------------
        Serial Number: 0x87bbe2d
        ...
      4. 前の手順のシリアル番号を使用して、CA 署名証明書を ~/certs_db/CA.pem ファイルにダウンロードします。
        # pki -p 8080 ca-cert-show 0x87bbe2d --output ~/certs_db/CA.pem
      5. CA 署名証明書を NSS データベースにインポートします。
        # pki -d ~/certs_db/ -c password client-cert-import "CA Certificate" --ca-cert ~/certs_db/CA.pem
      6. エージェントの証明書をインポートします。
        # pk12util -d ~/certs_db/ -i ~/.dogtag/instance_name/ca_admin_cert.p12
        Enter Password or Pin for "NSS FIPS 140-2 Certificate DB": password
        Enter password for PKCS12 file: password
        pk12util: PKCS12 IMPORT SUCCESSFUL
        
    2. CMS (CMC) 要求で Certificate Management を作成します。
      1. ~/sslserver-cmc-request.cfg などの設定ファイルを以下の内容で作成します。
        # NSS database directory where the CA agent certificate is stored.
        dbdir=~/certs_db/
        
        # NSS database password.
        password=password
        
        # Token name (default is internal).
        tokenname=internal
        
        # Nickname for CA agent certificate.
        nickname=caadmin
        
        # Request format: pkcs10 or crmf.
        format=pkcs10
        
        # Total number of PKCS10/CRMF requests.
        numRequests=1
        
        # Path to the PKCS10/CRMF request.
        # The content must be in Base-64 encoded format.
        # Multiple files are supported. They must be separated by space.
        input=~/ds.csr
        
        # Path for the CMC request.
        output=~/sslserver-cmc-request.bin
      2. CMC 要求を作成します。
        # CMCRequest ~/sslserver-cmc-request.cfg
        ...
        The CMC enrollment request in base-64 encoded format:
        ...
        The CMC enrollment request in binary format is stored in ~/sslserver-cmc-request.bin
    3. CMC 要求を送信します。
      1. ~/sslserver-cmc-submit.cfg などの設定ファイルを以下の内容で作成します。
        # PKI server host name.
        host=server.example.com
        
        # PKI server port number.
        port=8443
        
        # Use secure connection.
        secure=true
        
        # Use client authentication.
        clientmode=true
        
        # NSS database directory where the CA agent certificate is stored.
        dbdir=~/certs_db/
        
        # NSS database password.
        password=password
        
        # Token name (default: internal).
        tokenname=internal
        
        # Nickname of CA agent certificate.
        nickname=caadmin
        
        # CMC servlet path
        servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCserverCert
        
        # Path for the CMC request.
        input=~/sslserver-cmc-request.bin
        
        # Path for the CMC response.
        output=~/sslserver-cmc-response.bin
      2. 要求を送信します。
        # HttpClient sslserver-cmc-submit.cfg
        ...
        The response in binary format is stored in
        ~/sslserver-cmc-response.bin
      3. 必要に応じて、結果を確認します。
        # CMCResponse -d ~/certs_db/ -i ~/sslserver-cmc-response.bin
        ...
        Number of controls is 1
        Control #0: CMCStatusInfoV2
           OID: {1 3 6 1 5 5 7 7 25}
           BodyList: 1
           Status: SUCCESS
        
    4. Directory Server 証明書のシリアル番号を表示します。
      # pki -p 8080 ca-cert-find --name "DS Certificate"
      ---------------
      1 entries found
      ---------------
      Serial Number: 0xc3eeb0c
      ...
    5. 前の手順でシリアル番号を使用して、証明書をダウンロードします。
      # pki -p 8080 ca-cert-show 0xc3eeb0c --output ~/ds.crt
    6. Directory Server および CA 証明書の証明書を Directory Server ホストにコピーします。以下に例を示します。
      # scp ~/ds.crt ~/certs_db/CA.pem ds.example.com:~/
    7. Certificate System を停止します。
      # systemctl stop pki-tomcatd@instance_name.service
  3. Directory Server ホストで以下を行います。
    1. Directory Server インスタンスを停止します。
      # systemctl stop dirsrv@instance_name
    2. 証明書を置き換えます。詳細は、『Red Hat Directory Server 管理ガイド』 の該当するセクションを参照してください。
      1. 古い証明書および CA 証明書を削除します。『証明書の削除』を参照してください。
      2. Certificate System が発行する CA 証明書をインストールします。『認証局証明書のインストール』を参照してください。
      3. Certificate System が発行する Directory Server の証明書をインストールします。『証明書のインストール』を参照してください。
    3. Directory Server インスタンスを停止します。
      # systemctl start dirsrv@instance_name
  4. Certificate System を開始します。
    # systemctl stop pki-tomcatd@instance_name.service
  5. 必要に応じて、証明書ベースの認証を設定します。詳細は、「内部データベースでの SSL/TLS クライアント認証の有効化」 を参照してください。

13.5.3. 内部データベースでの SSL/TLS クライアント認証の有効化

クライアント認証 により、あるエンティティーが証明書を提示して別のエンティティーに対して認証できるようにします。この認証方法は、たとえば、Certificate System エージェントがエージェントサービスページにログインするために使用します。
Certificate System インスタンスと、内部データベースとして使用する LDAP ディレクトリーインスタンスとの間で SSL/TLS 接続を使用するには、Certificate System インスタンスが LDAP ディレクトリーを認証してバインドできるようにクライアント認証を有効にする必要があります。
クライアント認証の設定には 2 つの部分があります。1 つ目は、SSL/TLS を設定し、Certificate System インスタンスのアクセスを制御するように ACI を設定するなど、LDAP ディレクトリーを設定します。2 つ目は、LDAP ディレクトリーにバインドして、証明書を設定するのに使用する Certificate System インスタンスでユーザーを作成します。
PKI インスタンスの LDAPS を設定するには、pkispawn(8) man ページの (例: セキュアな LDAP 接続を使用した PKI サブシステムのインストール) を参照してください。

13.5.4. 内部データベースへのアクセス制限

Red Hat Directory Server コンソールは、Certificate System が内部データベースとして使用する Directory Server インスタンスのエントリーまたはアイコンを表示します。
Certificate System 管理者権限を持つユーザーにアクセスが制限されている Certificate System Console とは異なり、Directory Server Console は、どのユーザーからでもアクセスすることができる。ユーザーは、内部データベースの Directory Server Console を開いて、そこに保存されているデータに変更できます (Certificate System 管理者グループからユーザーを削除したり、グループに自分のエントリーを追加したりなど)。
アクセスは、Directory Manager DN とパスワードを知っているユーザーのみに内部データベースに制限できます。このパスワードは、シングルサインオンのパスワードキャッシュを変更することで変更できます。
  1. Directory Server コンソールにログインします。
  2. Certificate System 内部データベースエントリーを選択して、Open をクリックします。
  3. Configuration タブを選択します。
  4. ナビゲーションツリーで Plug-ins を展開し、Pass-Through Authentication を選択します。
  5. 右側のペインで、Enable plugin チェックボックスの選択を解除します。
  6. Save をクリックします。
    サーバーを再起動するように要求します。
  7. Tasks タブをクリックして、Restart the Directory Server をクリックします。
  8. Directory Server コンソールを閉じます。
  9. サーバーが再起動したら、内部データベースインスタンスの Directory Server コンソールを開きます。
    Login to Directory ダイアログボックスが表示されます。Distinguished Name フィールドが Directory Manager DN を表示し、パスワードを入力します。
    内部データベースの Directory Server Console は、正しいパスワードを入力する場合のみ開きます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.