13.5. LDAP データベースの設定
- 証明書要求の保存および取得
- 証明書レコードの保存および取得
- 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-CA、CS_instance_name-KRA、CS_instance_name-OCSP、CS_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 はキーレコードと関連データのみを格納します。
警告
13.5.1. 内部データベース設定の変更
サブシステムインスタンスが内部データベースとして使用する Directory Server インスタンスを変更するには、以下を実行します。
- サブシステム管理コンソールにログインします。
pkiconsole https://server.example.com:admin_port/subsystem_type
- Configuration タブで Internal Database タブを選択します。
- ホスト名、ポート、およびバインド 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 を使用します。
- 設定が変更されます。変更にサーバーの再起動が必要な場合は、プロンプトとそのメッセージが表示されます。その場合には、サーバーを再起動します。
13.5.2. Directory Server で証明書システムが発行する証明書の使用
証明書システムのインストール時に Directory Server への暗号化された接続を使用するには、外部の認証局 (CA) によって発行された証明書または自己署名証明書のいずれかを使用する必要がありました。ただし、証明書システム CA を設定した後、管理者は、証明書システムが発行した証明書に置き換えることがよくあります。
Directory Server が使用する TLS 証明書を、Certificate System が発行した証明書に置き換えるには、次のコマンドを実行します。
- Directory Server ホストで以下を行います。
- Directory Server インスタンスを停止します。
# systemctl stop dirsrv@instance_name
- 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
- Directory Server インスタンスを起動し、CA が要求の処理できるようにします。
# systemctl start dirsrv@instance_name
- 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
- Certificate System ホストで以下を行います。
- CA エージェント証明書を Network Security Services (NSS) データベースにインポートして、CMC フル要求を署名します。
- 新しいディレクトリーを作成します。以下に例を示します。
# mkdir ~/certs_db/
- 新たに作成したディレクトリーでデータベースを初期化します。
# certutil -N -d ~/certs_db/
- CA 署名証明書のシリアル番号を表示します。
# pki -p 8080 ca-cert-find --name "CA Signing Certificate" --------------- 1 entries found --------------- Serial Number: 0x87bbe2d ...
- 前の手順のシリアル番号を使用して、CA 署名証明書を
~/certs_db/CA.pem
ファイルにダウンロードします。# pki -p 8080 ca-cert-show 0x87bbe2d --output ~/certs_db/CA.pem
- CA 署名証明書を NSS データベースにインポートします。
# pki -d ~/certs_db/ -c password client-cert-import "CA Certificate" --ca-cert ~/certs_db/CA.pem
- エージェントの証明書をインポートします。
# 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
- CMS (CMC) 要求で Certificate Management を作成します。
~/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
- 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
- CMC 要求を送信します。
~/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
- 要求を送信します。
# HttpClient sslserver-cmc-submit.cfg ... The response in binary format is stored in ~/sslserver-cmc-response.bin
- 必要に応じて、結果を確認します。
# 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
- Directory Server 証明書のシリアル番号を表示します。
# pki -p 8080 ca-cert-find --name "DS Certificate" --------------- 1 entries found --------------- Serial Number: 0xc3eeb0c ...
- 前の手順でシリアル番号を使用して、証明書をダウンロードします。
# pki -p 8080 ca-cert-show 0xc3eeb0c --output ~/ds.crt
- Directory Server および CA 証明書の証明書を Directory Server ホストにコピーします。以下に例を示します。
# scp ~/ds.crt ~/certs_db/CA.pem ds.example.com:~/
- Certificate System を停止します。
# systemctl stop pki-tomcatd@instance_name.service
- Directory Server ホストで以下を行います。
- Directory Server インスタンスを停止します。
# systemctl stop dirsrv@instance_name
- 証明書を置き換えます。詳細は、『Red Hat Directory Server 管理ガイド』 の該当するセクションを参照してください。
- 古い証明書および CA 証明書を削除します。『証明書の削除』を参照してください。
- Certificate System が発行する CA 証明書をインストールします。『認証局証明書のインストール』を参照してください。
- Certificate System が発行する Directory Server の証明書をインストールします。『証明書のインストール』を参照してください。
- Directory Server インスタンスを停止します。
# systemctl start dirsrv@instance_name
- Certificate System を開始します。
# systemctl stop pki-tomcatd@instance_name.service
- 必要に応じて、証明書ベースの認証を設定します。詳細は、「内部データベースでの 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 とパスワードを知っているユーザーのみに内部データベースに制限できます。このパスワードは、シングルサインオンのパスワードキャッシュを変更することで変更できます。
- Directory Server コンソールにログインします。
- Certificate System 内部データベースエントリーを選択して、をクリックします。
- Configuration タブを選択します。
- ナビゲーションツリーで Plug-ins を展開し、Pass-Through Authentication を選択します。
- 右側のペインで、Enable plugin チェックボックスの選択を解除します。
- サーバーを再起動するように要求します。
- Tasks タブをクリックして、 をクリックします。
- Directory Server コンソールを閉じます。
- サーバーが再起動したら、内部データベースインスタンスの Directory Server コンソールを開きます。Login to Directory ダイアログボックスが表示されます。Distinguished Name フィールドが Directory Manager DN を表示し、パスワードを入力します。内部データベースの Directory Server Console は、正しいパスワードを入力する場合のみ開きます。