6.5. Red Hat Directory Server のインストール
Certificate System は、Red Hat Directory Server を使用して、システム証明書とユーザーデータを保存します。Directory Server と Certificate System の両方を、ネットワーク内の同じまたは他のホストにインストールできます。
6.5.1. Certificate System 用の Directory Server インスタンスの準備
Red Hat Directory Server をインストールするには、以下の手順を実行します。
- Directory Server を提供するサブスクリプションがホストに登録されていることを確認してください。
- Directory Server リポジトリーを有効にします。
#
subscription-manager repos --enable=dirsrv-10-for-rhel-7-x86_64-rpms
- Directory Server および openldap-clients パッケージをインストールします。
#
dnf module install redhat-ds
#
dnf install openldap-clients
- Directory Server インスタンスを設定します。
- DS 設定ファイルを生成します (例:
/tmp/ds-setup.inf
)。$
dscreate create-template /tmp/ds-setup.inf
- DS 設定ファイルを次のようにカスタマイズします。
$ sed -i \ -e "s/;instance_name = .*/instance_name = localhost/g" \ -e "s/;root_password = .*/root_password = Secret.123/g" \ -e "s/;suffix = .*/suffix = dc=example,dc=com/g" \ -e "s/;create_suffix_entry = .*/create_suffix_entry = True/g" \ -e "s/;self_sign_cert = .*/self_sign_cert = False/g" \ /tmp/ds-setup.inf
setup
設定ファイルを指定して dscreate コマンドを使用してインスタンスを作成します。#
dscreate from-file /tmp/ds-setup.inf
詳細な手順は、『Red Hat Directory Server インストールガイド』を参照してください。
6.5.2. Certificate System の設定の準備
「pkispawn ユーティリティーの概要」 では、Certificate System と Directory Server の間に TLS を設定することを選択した場合は、Certificate System をインストールする際に、
pkispawn
ユーティリティーに渡す設定ファイルで次のパラメーターを使用します。
注記
最初に基本的な TLS サーバー認証接続を作成する必要があります。最後に、インストール後、接続に戻り、クライアント認証証明書を Directory Server に提示する必要があります。クライアント認証が設定されていると、
pki_ds_password
は関連なくなります。
pki_ds_database=back_end_database_name pki_ds_hostname=host_name pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=path_to_CA_or_self-signed_certificate pki_ds_password=password pki_ds_ldaps_port=port pki_ds_bind_dn=cn=Directory Manager
pki_ds_database
パラメーターの値は、pkispawn
ユーティリティーによって使用される名前で、Directory Server インスタンスに対応するサブシステムデータベースを作成します。
pki_ds_hostname
パラメーターの値は、Directory Server インスタンスのインストール場所によって異なります。これは、「Certificate System 用の Directory Server インスタンスの準備」 で使用される値によって異なります。
pki_ds_secure_connection=True を設定する場合は、以下のパラメーターを設定する必要があります。
pki_ds_secure_connection_ca_pem_file
: Directory Server の CA 証明書のエクスポートされたコピーを含むファイルのファイル名を含む完全修飾パスを設定します。このファイルが先に存在していないと、pkispawn
は使用できません。pki_ds_ldaps_port
: Directory Server がリッスンしているセキュアな LDAPS ポートの値を設定します。デフォルトは 636 です。
6.5.3. 一時的な証明書の置き換え
注記
本セクションでは、ルート CA をインストールして実行する必要があります。インストール後に、本セクションの指示に従うように指示されます。
このセクションでは、一時的な自己署名 Directory Server 証明書を新しくインストールした CA によって発行された永続的な Directory Server 証明書に置き換えるプロセス、または古い Directory Server 証明書を新しいものに置き換えるプロセスを説明します。
- 新しい Directory Server サーバー証明書を取得します。CA が署名した新規証明書の要求を送信します。CMC メソッドを使用して新しい Directory Server 証明書を取得するには、『Red Hat Certificate System 管理ガイド』 の 『システム証明書およびサーバー証明書の取得』 を参照してください。上記のセクションで、TLS サーバー証明書の作成に関するガイダンスに従ってください。証明書を作成したら、Directory Server 証明書データベースにインポートし直す必要があります。
- NSS データベースにアクセスする前に、Directory Server インスタンスを停止します。
# systemctl stop dirsrv@instance_name
- 古い Directory Server 証明書を削除します。
# certutil -F -d /etc/dirsrv/slapd-instance_name -f /etc/dirsrv/slapd-instance_name/password.txt -n "DS Certificate"
- 先ほどダウンロードした CA 証明書をインポートします。
# PKICertImport -d /etc/dirsrv/slapd-instance_name -f /etc/dirsrv/slapd-instance_name/password.txt -n "CA Certificate" -t "CT,C,C" -a -i ca.crt -u L
- 先にダウンロードした新しい Directory Server 証明書をインポートします。
# PKICertImport -d /etc/dirsrv/slapd-instance_name -f /etc/dirsrv/slapd-instance_name/password.txt -n "DS Certificate" -t ",," -a -i ds.crt -u V
「HSM への証明書のインポート」 も併せて参照してください。 - Directory Server インスタンスを停止します。
# systemctl start dirsrv@instance_name
- PKI CA から古い Directory Server 証明書を削除します。
- Certificate System インスタンスを停止します。
# systemctl stop pki-tomcatd@instance_name.service
- 証明書を削除します。
# certutil -D -d /var/lib/pki/instance_name/alias/ -n "DS Certificate"
- Certificate System インスタンスを起動します。
# systemctl start pki-tomcatd@instance_name.service
- 新しい Directory Server 証明書が、NSS データベースにインストールされている CA で署名されていることを確認します。
- Directory Server 証明書の表示
$ certutil -L -d /etc/dirsrv/slapd-instance_name -n "DS Certificate" Issuer: "CN=CA Signing Certificate,O=EXAMPLE" Subject: "CN=server.example.com"
- 古い Directory Server 証明書が PKI NSS データベースに存在しなくなったことを確認します。
$ certutil -L -d /var/lib/pki/instance_name/alias
- Certificate System が、新しい証明書を使用して Directory Server に接続できることを確認します。
$ pki cert-find
6.5.4. TLS クライアント認証の有効化
注記
本セクションでは、ルート CA をインストールして実行する必要があります。一時的な LDAP サーバー証明書を使用している場合は、最初に 「一時的な証明書の置き換え」 で置き換えます。インストール後は、このセクションの指示に従ってください。
TLS クライアント認証を有効にすることを選択した場合は、CS サブシステムのインストール時に基本的な TLS サーバー認証を設定して実行すると、逆戻りして、特定のサブシステムから LDAP サーバーへのクライアント認証の有効化を試みることができます。
クライアント認証の設定には 2 つの部分があります。最初の部分は、TLS の相互認証を必要とする LDAP ディレクトリーを設定します。この手順は 9.8 で詳しく説明します。Red Hat Directory Server 管理ガイドで証明書ベースのクライアント認証の使用
以下の点に注意してください。
pkispawn
は、すでに内部ディレクトリーサーバー上にpkidbuser
を自動的に作成しており、そこにはアウトバウンド TLS クライアント認証に使用される CS インスタンスのサブシステム証明書 (たとえばsubsystemCert cert-pki-ca
) がユーザーエントリーに格納されています。したがって、TLS クライアント認証用に別の LDAP ユーザーまたは別の証明書を作成する必要はありません。/etc/dirsrv/slapd-instance_name/certmap.conf
のコンテンツを作成する場合は、以下の形式を使用します。certmap rhcs <certificate issuer DN> rhcs:CmapLdapAttr seeAlso rhcs:verifyCert on
以下に例を示します。certmap rhcs CN=CA Signing Certificate,OU=pki-tomcat-ca,O=pki-tomcat-ca-SD rhcs:CmapLdapAttr seeAlso rhcs:verifyCert on
- 設定後に、Directory Server を再起動します。
2 番目の部分は、Red Hat Certificate System インスタンスに設定を追加して、TLS 相互認証を使用して内部 LDAP サーバーと通信するために使用するポートと証明書を認識できるようにすることです。これには、
<instance directory>/<subsystem type>/conf/CS.cfg
にある RHCS インスタンスの CS.cfg
ファイルを編集する必要があります。たとえば、/var/lib/pki/instance_name/ca/conf/CS.cfg
です。
CS.cfg
で、RHCS インスタンスのサブシステム証明書のニックネームを internaldb.ldapauth.clientCertNickname
に追加し、未使用のエントリーを 2 つ削除します。
internaldb.ldapauth.bindDN internaldb.ldapauth.bindPWPrompt
以下に例を示します。
internaldb._000=## internaldb._001=## Internal Database internaldb._002=## internaldb.basedn=o=pki-tomcat-ca-SD internaldb.database=pki-tomcat-ca internaldb.maxConns=15 internaldb.minConns=3 internaldb.ldapauth.authtype=SslClientAuth internaldb.ldapauth.clientCertNickname=HSM-A:subsystemCert pki-tomcat-ca internaldb.ldapconn.host=example.com internaldb.ldapconn.port=11636 internaldb.ldapconn.secureConn=true
インストール後のステップの最後に CS インスタンスを再起動します。
注記
特定の LDAP インスタンスに一致するように、
internaldb.basedn
パラメーターおよび internaldb.database
パラメーターを設定する必要があります。
コンプライアンスのために、internaldb.ldapauth.authtype=SslClientAuth および internaldb.ldapconn.secureConn=true を設定する必要があり、
internaldb.ldapauth.clientCertNickname
の値は、NSS DB で LDAP に対して認証するには、TLS クライアント証明書のニックネームと一致させる必要があります。
その他の値はすべて、環境または可用性の要件を反映するために必要に応じて変更できます。