検索

9.4. TLS の有効化

download PDF
Directory Server は、クライアントとサーバーとの間で暗号化された接続と、レプリケーション環境でののサーバー間の暗号化をサポートします。このため、Directory Server は以下に対応します。
  • LDAPS プロトコル: TLS 暗号化は接続が確立された後に直接使用されます。
  • LDAP プロトコルの STARTTLS コマンド: 接続は、クライアントが STARTTLS コマンドを送信するまで暗号化されません。
重要
セキュリティー上の理由から、Red Hat は TLS 暗号化を有効にすることを推奨します。
バインド識別名 (DN) およびパスワード、または証明書ベースの認証を使用して、簡易認証で TLS を使用できます。
Directory Server の暗号化サービスは、Mozilla Network Security Services (NSS) (TLS およびベース暗号化機能のライブラリー) によって提供されます。NSS には、連邦情報処理標準 (FIPS) 140-2 認定であるソフトウェアベースの暗号化トークンが含まれています。

9.4.1. Directory Server での TLS の有効化

本セクションでは、Directory Server で TLS を有効にする方法を説明します。

9.4.1.1. コマンドラインを使用した Directory Server での TLS の有効化

コマンドラインで TLS を有効にするには、以下を実行します。
  1. Directory Server の NSS データベースがすでに存在しているかどうかを確認します。
    # ls -1 /etc/dirsrv/slapd-instance_name/*.db
    データベースが存在しない場合は作成します。「コマンドラインを使用した NSS データベースの作成」 を参照してください。
  2. 証明書を要求してインストールします。
  3. TLS を有効にし、LDAPS ポートを設定します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    dn: cn=config
    changetype: modify
    replace: nsslapd-securePort
    nsslapd-securePort: 636
    -
    replace: nsslapd-security
    nsslapd-security: on
  4. NSS データベースのサーバー証明書のニックネームを表示します。
    # certutil -L -d /etc/dirsrv/slapd-instance_name/
    Certificate Nickname                Trust Attributes
                                        SSL,S/MIME,JAR/XPI
    
    Example CA                          CT,,
    server-cert                         u,u,u
    次の手順でニックネームが必要です。
  5. RSA 暗号ファミリーを有効にするには、NSS データベースセキュリティーデバイスおよびサーバー証明書のニックネームを設定し、次のエントリーをディレクトリーに追加します。
    # ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    dn: cn=RSA,cn=encryption,cn=config
    cn: RSA
    objectClass: top
    objectClass: nsEncryptionModule
    nsSSLToken: internal (software)
    nsSSLPersonalitySSL: server-cert
    nsSSLActivation: on
    注記
    デフォルトでは、NSS データベース内のセキュリティーデバイスの名前は internal (software) です。
    cn=RSA,cn=encryption,cn=config エントリーがすでに存在しているため、上記のコマンドが失敗する場合は、対応する属性を更新します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    dn: cn=RSA,cn=encryption,cn=config
    changetype: modify
    replace: nsSSLToken
    nsSSLToken: internal (software)
    -
    replace: nsSSLPersonalitySSL
    nsSSLPersonalitySSL: server-cert
    -
    replace: nsSSLActivation
    nsSSLActivation: on
  6. 必要に応じて、Directory Server がサポートする暗号化の一覧を更新します。詳細は「コマンドラインを使用した Directory Server が使用する暗号の表示および設定」を参照してください。
  7. 必要に応じて、証明書ベースの認証を有効にします。詳細は「証明書ベースのクライアント認証の使用」を参照してください。
  8. 必要に応じて、パスワードファイルを作成して、NSS データベースのパスワードを要求せずに Directory Server が起動するようにします。詳細は「Directory Server のパスワードファイルの作成」を参照してください。
  9. Directory Server インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name
    NSS データベースにパスワードを設定し、パスワードファイルを作成しないと、Directory Server は NSS データベースのパスワードを要求します。詳細は「パスワードファイルなしで Directory Server の起動」を参照してください。
  10. 必要に応じて、サーバーへの接続時に Directory Server Console が TLS を使用するようにします。「コマンドラインを使用したコンソールから Directory Server への接続に対する TLS の有効化」 を参照してください。
  11. 必要に応じて、Red Hat Identity Management Console が TLS を使用するように TLS を有効にします。「管理サーバーでの TLS の有効化」 を参照してください。

9.4.1.2. コンソールを使用した Directory Server での TLS の有効化

コンソールを使用して Directory Server で TLS を有効にするには、以下を実行します。
  1. CSR を作成します。「コンソールを使用した証明書署名要求の作成」 を参照してください。
  2. 認証局 (CA) 証明書をインポートします。「コンソールを使用した CA 証明書のインストール」 を参照してください。
  3. CA が発行するサーバー証明書をインポートします。「コンソールを使用した証明書のインストール」 を参照してください。
  4. Directory Server コンソールを開き、Configuration タブでホスト名を選択します。
  5. 右側のペインの Settings タブで LDAPS ポートを Encrypted port フィールドに入力し、Save ボタンをクリックします。
    LDAPS のデフォルトポートは 636 です。
    注記
    LDAPS ポートは、ポート フィールドの 暗号化されていない接続に設定されたセットとは異なる必要があります。
  6. 右側のペインの Encryption タブで、以下を実行します。
    1. このサーバーの Enable SSL を選択します。
    2. Use this cipher family: RSA。 一覧からセキュリティーデバイスおよび証明書を選択します。
    3. 必要に応じて、Settings ボタンをクリックして、Directory Server がサポートする暗号化の一覧を更新します。詳細は、「コンソールを使用した Directory Server が使用する暗号の表示および設定」 を参照してください。
    4. 必要に応じて、ユーザーが証明書を使用して認証できるようにします。詳細は「証明書ベースのクライアント認証の使用」を参照してください。
      重要
      TLS が Directory Server でのみ有効で、Directory Server コンソールではない場合は、Require client authentication を選択しないでください。
    5. アウトバウンド SSL 接続オプションに対して証明書の名前に対して Check host name を選択し、認証用にクライアントが提示する証明書のサブジェクト名の cn 属性と一致することを確認します。
      重要
      Red Hat は、中間者攻撃(MITM)に対して発信 TLS 接続を保護するために、レプリケーション環境でこのオプションを有効にすることを推奨します。
    6. Use SSL in Console オプションが選択されていないことを確認します。
      警告
      この手順を終了する前に、Use SSL in Console オプションを有効にしないでください。設定を保存すると直ちに反映されるためです。これにより、コンソールがサーバーへの接続に失敗します。
      このオプションを誤って有効にし、コンソールがサーバーへの接続に失敗した場合には、コマンドラインを使用してオプションを無効にします。
      # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
      dn: cn=slapd-instance_name,cn=Red Hat Directory Server,
       cn=Server Group,cn=server.example.com,ou=example.com,o=NetscapeRoot
      changetype: modify
      replace: nsServerSecurity
      nsServerSecurity: off
    7. Save をクリックします。
  7. 必要に応じて、パスワードファイルを作成して、NSS データベースのパスワードを要求せずに Directory Server が起動するようにします。詳細は「Directory Server のパスワードファイルの作成」を参照してください。
  8. Directory Server インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name
    NSS データベースにパスワードを設定し、パスワードファイルを作成しないと、Directory Server は NSS データベースのパスワードを要求します。詳細は「パスワードファイルなしで Directory Server の起動」を参照してください。
  9. 必要に応じて、サーバーへの接続時に Directory Server Console が TLS を使用するようにします。「コンソールを使用したコンソールから Directory Server への接続に対する TLS の有効化」 を参照してください。
  10. 必要に応じて、Red Hat Identity Management Console が TLS を使用するようにします。「管理サーバーでの TLS の有効化」 を参照してください。

9.4.1.3. 暗号化暗号の設定

Directory Server は異なる暗号に対応し、その暗号化を有効または無効にできます。暗号化は、暗号化で使用されるアルゴリズムです。クライアントがサーバーとの TLS 接続を開始すると、クライアントは情報の暗号化を好む暗号をサーバーに指示します。サーバーがこれらの暗号のいずれかに対応する場合は、このアルゴリズムを使用して暗号化された接続を確立できます。
「TLS の有効化」に従って暗号化を有効にすると、Directory Server が使用する暗号化を表示および更新できます。
9.4.1.3.1. コマンドラインを使用した Directory Server が使用する暗号の表示および設定

利用可能なすべての暗号の表示

Directory Server で対応可能なすべての暗号の一覧を表示するには、次のコマンドを実行します。
# ldapsearch -xLLL -H ldap://server.example.com:389 -D "cn=Directory Manager" -W \
     -b 'cn=encryption,cn=config' -s base nsSSLSupportedCiphers -o ldif-wrap=no

dn: cn=encryption,cn=config
nsSSLSupportedCiphers: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256::AES-GCM::AEAD::128
...
nsSSLSupportedCiphers: SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5::RC2::MD5::128
これは、有効または無効にできる暗号だけ含まれる一覧になります。この一覧には、Directory Server が現在使用している暗号は表示されません。

使用する暗号ディレクトリーサーバーの表示

Directory Server が現在使用中の暗号は、nsSSLEnabledCiphers の読み取り専用属性に保存されます。それらを表示するには、次のコマンドを実行します。
# ldapsearch -xLLL -H ldap://server.example.com:389 -D "cn=Directory Manager" -W \
     -b 'cn=encryption,cn=config' -s base nsSSLEnabledCiphers -o ldif-wrap=no

dn: cn=encryption,cn=config
nsSSLEnabledCiphers: TLS_RSA_WITH_AES_256_CBC_SHA::AES::SHA1::256
nsSSLEnabledCiphers: TLS_RSA_WITH_AES_128_CBC_SHA::AES::SHA1::128
...
さらに、有効/無効にするように設定された暗号を表示できます。
# ldapsearch -xLLL -H ldap://server.example.com:389 -D "cn=Directory Manager" -W \
     -b 'cn=encryption,cn=config' -s base nsSSL3Ciphers -o ldif-wrap=no

dn: cn=encryption,cn=config
nsSSL3Ciphers: -all,+tls_rsa_aes_128_sha,+tls_rsa_aes_256_sha,...
重要
Directory Server は、nsSSL3Ciphers 属性からの設定を使用して、実際に使用されている暗号の一覧を生成します。ただし、nsSSL3Ciphers で弱い暗号化を有効にし、allowWeakCiphers パラメーターをデフォルトの off に設定した場合、Directory Server は強力な暗号化のみを使用し、nsSSLSupportedCiphers 読み取り専用属性に表示します。

有効な暗号リストの更新

有効な暗号の一覧を更新するには、次のコマンドを実行します。
  1. 現在有効な暗号の一覧を表示します。「使用する暗号ディレクトリーサーバーの表示」を参照してください。
  2. 特定の暗号のみを有効にするには、nsSSL3Ciphers 属性を更新します。たとえば、TLS_RSA_WITH_AES_128_GCM_SHA256 暗号のみを有効にするには、次のコマンドを実行します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=encryption,cn=config
    changetype: modify
    add: nsSSL3Ciphers
    nsSSL3Ciphers: -all,+TLS_RSA_WITH_AES_128_GCM_SHA256
  3. Directory Server インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name
  4. 必要に応じて、有効な暗号の一覧を表示して、結果を確認します。「使用する暗号ディレクトリーサーバーの表示」を参照してください。
9.4.1.3.2. コンソールを使用した Directory Server が使用する暗号の表示および設定
コンソールを使用して暗号を選択し、必要に応じて更新するには、以下を実行します。
  1. Directory Server コンソールを開きます。
  2. Configuration タブでサーバー名を選択します。
  3. 右側のペインで Encryption タブを選択し、Settings ボタンをクリックします。
  4. 必要に応じて、暗号の一覧を更新します。以下に例を示します。
  5. OK をクリックします。
  6. Save をクリックします。
  7. 暗号の一覧を更新した場合は、Directory Server インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name

9.4.1.4. パスワードファイルなしで Directory Server の起動

暗号化を有効にし、NSS データベースに設定したパスワードを使用して Directory Server を起動する場合は、以下を行います。
  • systemctl コマンドで ns-slapd Directory Server プロセスが起動すると、systemd はパスワードを求めるプロンプトを表示し、その入力内容を systemd-tty-ask-password-agent ユーティリティーに自動的に渡します。以下に例を示します。
    # systemctl start dirsrv
    Enter PIN for Internal (Software) Token:
  • まれに、ns-slapd Directory Server プロセスが systemctl ユーティリティーにより開始されず、ターミナルから切り離されていると、wall コマンドを使用してすべての端末にメッセージを送信します。以下に例を示します。
    Broadcast message from root@server (Fri 2017-01-01 06:00:00 CET):
    
    Password entry required for 'Enter PIN for Internal (Software) Token:' (PID 1234).
    Please enter password with the systemd-tty-ask-password-agent tool!
    パスワードを入力するには、次を実行します。
    # systemd-tty-ask-password-agent
    Enter PIN for Internal (Software) Token:

9.4.1.5. Directory Server のパスワードファイルの作成

暗号化が有効で、NSS データベースに設定したパスワードがあると、サービスの起動時に Directory Server はこのパスワードを要求します。「パスワードファイルなしで Directory Server の起動」を参照してください。
このプロンプトを省略するには、NSS データベースパスワードを /etc/dirsrv/slapd-instance_name/pin.txt ファイルに保存できます。これにより、このパスワードを要求せずに Directory Server が自動的に起動できます。
警告
パスワードはクリアテキストで保存されます。サーバーがセキュアでない環境で実行している場合は、パスワードファイルを使用しないでください。
パスワードファイルを作成するには、以下を実行します。
  1. 以下の内容で /etc/dirsrv/slapd-instance_name/pin.txt ファイルを作成します。
    • NSS ソフトウェア暗号モジュールを使用する場合は、以下になります。
      Internal (Software) Token:password
    • Hardware Security Module (HSM) を使用する場合:
      name_of_the_token:password
  2. パーミッションを設定します。
    # chown dirsrv:dirsrv /etc/dirsrv/slapd-instance_name/pin.txt
    # chmod 400 /etc/dirsrv/slapd-instance_name/pin.txt

9.4.1.6. 証明書の有効期限が切れた場合の Directory Server の動作の管理方法

デフォルトでは、暗号化が有効で、証明書の有効期限が切れると、Directory Server は警告をログに記録し、サービスを起動します。この動作を変更するには、cn=config エントリーの nsslapd-validate-cert 属性を設定します。以下の値を設定できます。
  • warn: Directory Server インスタンスが起動し、期限切れの証明書に関する警告を /var/log/dirsrv/slapd-instance_name/error ログファイルに記録します。これはデフォルト設定です。
  • on: Directory Server は証明書を検証し、証明書の有効期限が切れると、インスタンスの起動に失敗します。
  • off: Directory Server は証明書の有効期限を検証しません。インスタンスが起動し、警告は記録されません。

例9.3 証明書の有効期限が切れると Directory Server が起動しないようにする

証明書の有効期限が切れている場合は Directory Server が起動しないようにするには、次を実行します。
  1. nsslapd-validate-cert 属性を on に設定します。
    # ldapmodify -D "cn=Directory Manager" -W -p 636 -h server.example.com -x
    dn: cn=config
    changetype: modify
    replace: nsslapd-validate-cert
    nsslapd-validate-cert: on
  2. Directory Server インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.