検索

9.3. Directory Server が使用する NSS データベースの管理

download PDF
TLS による暗号化または証明書ベースの認証を使用するには、Network Security Services (NSS) データベースで証明書を管理する必要があります。インスタンスを作成すると、dscreate ユーティリティーは /etc/dirsrv/slapd-instance_name/ ディレクトリーにこのデータベースを自動的に作成し、強力なパスワードで保護します。このユーティリティーは、パスワードを /etc/dirsrv/slapd-instance_name/pwdfile.txt ファイルに保存します。Directory Server はこのファイルを使用しないことに注意してください。dscreate ユーティリティーは、管理者にパスワードを提供するためだけにこのファイルを作成しました。パスワードの変更方法は、「NSS データベースのパスワードの変更」を参照してください。
本セクションでは、Directory Server の NSS データベース管理に関する最も一般的なアクションを説明します。

9.3.1. 証明書署名要求の作成

証明書署名要求 (CSR) は、サーバーの鍵を署名するための認証局 (CA) への要求です。このセクションでは、秘密鍵を含む CSR を作成する方法を説明します。
注記
Directory Server は、certutil ユーティリティーを使用して NSS データベースへの秘密鍵と証明書および CSR を直接作成することのみをサポートします。

9.3.1.1. コマンドラインを使用した証明書署名要求の作成

キーおよび CSR を作成するには、dsctl tls generate-server-cert-csr コマンドを使用します。
# dsctl instance_name tls generate-server-cert-csr -s "certificate_subject"
dsctl tls generate-server-cert-csr コマンドは、CSR を /etc/dirsrv/slapd-instance_name/Server-Cert.csr ファイルに、秘密鍵を DDirectory Server のネットワークセキュリティーサービス (NSS) データベースに保存します。

例9.1 単一ホスト名の秘密鍵および CSR の作成

以下のコマンドは、server.example.com ホストのビット秘密鍵を生成します。
# dsctl instance_name tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization,OU=IT,ST=North Carolina,C=US"
-s パラメーターで指定した文字列は、RFC 1485 に従って有効なサブジェクト名である必要があります。CN フィールドが必要で、サーバーの完全修飾ドメイン名 (FQDN) に設定する必要があります。その他のフィールドは任意です。

例9.2 マルチホームホストの秘密鍵および CSR の作成

Directory Server ホストに複数の名前がある場合は、CSR の SAN 拡張で、すべてのホスト名を持つ CSR を作成します。以下のコマンドは、ビットの秘密鍵と、ホスト名 server.example.com および server.example.net の CSR を作成します。
# dsctl instance_name tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization,OU=IT,ST=North Carolina,C=US" server.example.com server.example.net
最後のパラメーターとしてホスト名を指定した場合、lpmp コマンドは DNS:server.example.com, DNS:server.example.net エントリーで SAN 拡張を CSR に追加します。-s パラメーターで指定した文字列は、RFC 1485 に従って有効なサブジェクト名である必要があります。CN フィールドが必要で、サーバーの FQDN のいずれかに設定する必要があります。その他のフィールドは任意です。
CSR を生成した後、それを CA に送信し、発行された証明書を取得します。詳細は、CA のドキュメントを参照してください。

9.3.2. CA 証明書のインストール

Directory Server が認証局 (CA) を信頼できるようにするには、CA の証明書を Network Security Services (NSS) データベースにインストールする必要があります。このプロセスでは、CA が発行する証明書を信頼すべてきかどうかを設定する必要があります。
表9.1 CA 信頼オプション
Web コンソールオプション dsconf および certutil オプション 説明
(C) 信頼できる CA C,, サーバーは、レプリケーションパートナーへの暗号化された接続を確立するために使用する証明書を検証し、信頼できる CA により発行されていることを確認します。
(T) 信頼できる CA クライアント認証 T,, サーバーは、TLS EXTERNAL バインドに適したクライアント証明書を発行するためにこの CA 証明書を信頼します。
CA に両方のオプションを設定できます。certutil を使用する場合は、-T "CT,," パラメーターをユーティリティーに渡します。

9.3.2.1. コマンドラインを使用した CA 証明書のインストール

CA 証明書をインストールするには、以下を実行します。
  1. CA 証明書をインポートします。たとえば、/root/ca.crt ファイルに保存されている CA 証明書をインポートし、Example CA のニックネームでデータベースに保存するには、次のコマンドを実行します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate add --file /root/ca.crt --name "Example CA"
  2. 信頼オプションを設定します。たとえば、CT,, t 信頼フラグを設定するには、以下を実行します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate set-trust-flags "Example CA" --flags "CT,,"

9.3.2.2. Web コンソールを使用した CA 証明書のインストール

Web コンソールを使用して CA 証明書をインストールするには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Server Settings メニューを開き、Security エントリーを選択します。
  4. Certificate Management タブを開き、Trusted Certificate Authorities サブタブを選択します。
  5. Add CA Certificate をクリックします。
  6. CA 証明書ファイルへのパスと証明書のニックネームを入力します。

    図9.1 CA 証明書の追加

    CA 証明書の追加
    注記
    CA 証明書は Directory Server ホストにローカルに保存され、dirsrv ユーザーが読み取り可能でなければなりません。
  7. Add Certificate をクリックします。
  8. インポートされた CA 証明書の横にある Actions をクリックし、Edit Trust Flags を選択します。
  9. SSL 列で、(C) - Trusted CA および (T)- Trusted CA Client Auth を選択します。

    図9.2 CA 証明書の信頼フラグの追加

    CA 証明書の信頼フラグの追加

9.3.3. 秘密鍵およびサーバー証明書のインポート

このセクションでは、外部ツールを使用して NSS データベースで秘密鍵および秘密鍵と証明書署名要求 (CSR) を作成していない場合に、秘密鍵と証明書署名要求 (CSR) の両方をインポートする方法を説明します。
NSS データベースで秘密鍵および CSR を作成した場合は、「サーバー証明書のインストール」で説明されている手順に従います。
/root/server.crt から証明書をインポートし、/root/server.key ファイルから秘密鍵をインポートするには、以下を入力します。
# dsctl instance_name tls import-server-key-cert /root/server.crt /root/server.key
dsctl tls import-server-key-cert コマンドには、以下の順序でパスが必要なことに注意してください。
  1. サーバー証明書へのパス。
  2. 秘密鍵ファイルへのパス。

9.3.4. サーバー証明書のインストール

認証局 (CA) が要求された証明書を発行したら、Network Security Services (NSS) データベースにインストールする必要があります。
NSS データベースにない秘密鍵と証明書署名要求を作成している場合は、「秘密鍵およびサーバー証明書のインポート」で説明されている手順に従ってください。

9.3.4.1. コマンドラインを使用したサーバー証明書のインストール

Directory Server の NSS データベースにサーバー証明書をインストールするには、certutil ユーティリティーを使用します。以下に例を示します。
  1. CA 証明書をインストールします。「CA 証明書のインストール」を参照してください。
  2. サーバー証明書をインポートします。たとえば、/root/instance_name.crt ファイルに保存されている証明書をインポートし、インスタンスが使用するプライマリー証明書として設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security certificate add --file /root/instance_name.crt --name "Server-Cert" --primary-cert

9.3.4.2. Web コンソールを使用したサーバー証明書のインストール

Web コンソールを使用してサーバー証明書をインストールするには、以下を実行します。
  1. CA 証明書をインストールします。「CA 証明書のインストール」を参照してください。
  2. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  3. インスタンスを選択します。
  4. Server Settings メニューを開き、Security エントリーを選択します。
  5. Certificate Management タブを開き、サブタブの TLS Certificates を選択します。
  6. Add Server Certificate をクリックします。
  7. CA 証明書ファイルのパスおよび証明書のニックネームを入力します。

    図9.3 サーバー証明書の追加

    サーバー証明書の追加
    注記
    サーバー証明書は Directory Server ホストにローカルに保存され、dirsrv ユーザーが読み取り可能でなければなりません。
  8. Add Certificate をクリックします。

9.3.5. 自己署名証明書の生成およびインストール

dscreate ユーティリティーを使用して TLS を有効にしたインスタンスを作成すると、dscreate が自動的に作成され、自己署名証明書がインストールされます。ただし、インスタンスの作成時に TLS を有効にしなかった場合は、手動で自己署名証明書を作成およびインストールできます。
注記
この操作は、コマンドラインを使用した場合のみ実行できます。
自己署名証明書を作成してインストールするには、以下を実行します。
  1. ランダムなデータで関心のあるファイルを生成します。たとえば、サイズが 4096 ビットのあるファイルを生成するには、次のコマンドを実行します。
    # openssl rand -out /tmp/noise.bin 4096
  2. 自己署名証明書を作成し、NSS データベースに追加します。
    # certutil -S -x -d /etc/dirsrv/slapd-instance_name/ -z /tmp/noise.bin \
         -n "Server-Cert" -s "CN=$HOSTNAME" -t "CT,C,C" -m $RANDOM \
         --keyUsage digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    Red Hat Enterprise Linux は、$HOSTNAME 変数を自動的に完全修飾ドメイン名 (FQDN) に置換え、$RANDOM を無作為に生成した番号に置き換えます。先のコマンドで使用したパラメーターの詳細は、certutil(1) の man ページを参照してください。
  3. 必要に応じて、生成された証明書が自己署名されていることを確認します。
    # certutil -L -d /etc/dirsrv/slapd-instance_name/ -n "Server-Cert" | egrep "Issuer|Subject"
            Issuer: "CN=server.example.com"
            Subject: "CN=server.example.com"
    このコマンドの出力には、証明書の発行者とサブジェクトの両方について Directory Server ホストの FQDN が表示されるはずです。

9.3.6. 証明書の更新

証明書がまもなく期限切れになる場合は、セキュアな接続の確立を継続するのに期間で証明書を更新する必要があります。

9.3.6.1. コマンドラインでの証明書の更新

サーバー証明書を更新するには:
  • 属性の暗号化を使用しない場合:
    1. キーサイズ、ホスト名、サブジェクトなど、同じオプションで新しい証明書署名要求 (CSR) を作成します。CSR の作成に関する詳細は、「コマンドラインを使用した証明書署名要求の作成」を参照してください。
    2. CA から発行した証明書を取得したら、同じニックネームを使用してデータベースにインストールします。「コマンドラインを使用した CA 証明書のインストール」を参照してください。
    3. インスタンスを停止します。
      # dsctl instance_name stop
    4. /etc/dirsrv/slapd-instance_name/dse.ldif ファイルを編集し、属性を含む次のエントリーを削除します。
      • cn=AES,cn=encrypted attribute keys,cn=database_name,cn=ldbm database,cn=plugins,cn=config
      • cn=3DES,cn=encrypted attribute keys,cn=database_name,cn=ldbm database,cn=plugins,cn=config
      重要
      全データベースのエントリーを削除します。nsSymmetricKey 属性を含むエントリーが /etc/dirsrv/slapd-instance_name/dse.ldif ファイルに残されると、Directory Server は起動に失敗します。
    5. インスタンスを起動します。
      # dsctl instance_name start
    Directory Server は、新たに発行した証明書を自動的に使用します。
  • 属性の暗号化を使用する場合は、「属性暗号化に使用される TLS 証明書の更新」 を参照してください。

9.3.7. 証明書の削除

たとえば、証明書が公開されていないため、証明書が必要なくなった場合は、その証明書をデータベースから削除します。

9.3.7.1. コマンドラインで証明書の削除

コマンドラインで証明書を削除するには、以下を行います。
  1. 必要に応じて、データベースの証明書を表示します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security certificate list
    
    Certificate Name: Server-Cert
    Subject DN: CN=server.example.com
    Issuer DN: CN=Example CA
    Expires: 2022-07-29 11:10:14
    Trust Flags: ,,
  2. 証明書を削除します。たとえば、Server-Cert ニックネームで証明書を削除するには、次を実行します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security certificate del Server-Cert

9.3.7.2. Web コンソールを使用した証明書の削除

Web コンソールを使用して証明書を削除するには、以下を行います。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Server Settings メニューを開き、Security エントリーを選択します。
  4. Certificate Management タブを開き、サブタブの TLS Certificates を選択します。
  5. 証明書の横にある Actions をクリックし、Delete Certificate を選択します。
  6. Yes をクリックします。

9.3.8. 秘密鍵の削除

たとえば、強力な鍵を作成したなどのため、秘密鍵が必要なくなった場合は、データベースから削除します。
警告
秘密鍵を削除すると、この鍵に基づく証明書は機能しなくなります。

9.3.8.1. コマンドラインでの秘密鍵の削除

秘密鍵を削除するには、次を実行します。
  1. 削除する鍵に基づいてすべての証明書を削除します。「証明書の削除」を参照してください。
  2. 必要に応じて、データベースのキーを表示します。
    # certutil -d /etc/dirsrv/slapd-instance_name/ -K
    certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services"
    Enter Password or Pin for "NSS Certificate DB":
    < 0> rsa      7a2fb6c269d83c4036eac7e4edb6aaf2ed08bc4a   Server-Cert
    < 1> rsa      662b826aa3dd4ca7fd7e6883558cf3866c42f4e2   example-cert
  3. 秘密鍵を削除します。たとえば、example-cert ニックネームで秘密鍵を削除するには、次を実行します。
    # certutil -d /etc/dirsrv/slapd-instance_name/ -F -n "example-cert"

9.3.9. CA 信頼オプションの変更

特定の状況では、認証局 (CA) の trust オプションを更新する必要があります。本セクションでは、この手順を説明します。

9.3.9.1. コマンドラインを使用した CA 信頼オプションの変更

CA の信頼オプションを変更するには、--flags パラメーターの新しいオプションを dsconf security ca-certificate set-trust-flags コマンドに渡します。
たとえば、Directory Server が example-CA という名前の CA が発行するクライアント証明書のみを信頼するように設定するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate set-trust-flags "example-CA" --flags "T,,"
--flags trust_options パラメーターは、CA が発行し、信頼する証明書を設定します。表9.1「CA 信頼オプション」を参照してください。

9.3.9.2. Web コンソールを使用した CA 信頼オプションの変更

Web コンソールを使用して CA の信頼オプションを変更するには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Server Settings メニューを開き、Security エントリーを選択します。
  4. Certificate Management タブを開きます。
  5. Trusted Certificate Authorities サブタブで、インポートした CA 証明書の横にある Actions をクリックし、Edit Trust Flags を選択します。
  6. 信頼フラグを選択します。以下に例を示します。

    図9.4 CA 証明書の信頼フラグの設定

    CA 証明書の信頼フラグの設定
  7. Save をクリックします。

9.3.10. NSS データベースのパスワードの変更

特定の状況では、管理者が Network Security Services (NSS) データベースのパスワードを変更します。本セクションでは、この手順を説明します。
重要
パスワードファイルを使用して Directory Server が Network Security Services (NSS) データベースを自動的に開くようにするには、新しいパスワードの設定後にファイルを更新する必要があります。「Directory Server のパスワードファイルの作成」を参照してください。

9.3.10.1. コマンドラインを使用した NSS データベースのパスワードの変更

NSS データベースのパスワードを変更するには、次を実行します。
# certutil -d /etc/dirsrv/slapd-instance_name -W
Enter Password or Pin for "NSS Certificate DB":
Enter a password which will be used to encrypt your keys.
The password should be at least 8 characters long,
and should contain at least one non-alphabetic character.

Enter new password: 
Re-enter password: 
Password changed successfully.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.