検索

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. 証明書を要求してインストールします。
  2. TLS を有効にし、LDAPS ポートを設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-securePort=636 nsslapd-security=on
    Successfully replaced "nsslapd-securePort"
    Successfully replaced "nsslapd-security"
  3. NSS データベースでサーバー証明書名を表示します。
    # 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: ,,
    次の手順でニックネームが必要です。
  4. RSA 暗号ファミリーを有効にするには、NSS データベースセキュリティーデバイスおよびサーバー証明書名を設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security rsa set --tls-allow-rsa-certificates on --nss-token "internal (software)" --nss-cert-name Server-Cert
    注記
    デフォルトでは、NSS データベースのセキュリティーデバイスの名前は internal (software) です。
  5. 必要に応じて、Directory Server がサポートする暗号化のリストを更新します。詳細については、「コマンドラインを使用した Directory Server が使用する暗号の表示および設定」 を参照してください。
  6. 必要に応じて、証明書ベースの認証を有効にします。詳細については、「証明書ベースのクライアント認証の使用」 を参照してください。
  7. 必要に応じて、パスワードファイルを作成して、NSS データベースのパスワードを要求せずに Directory Server が起動するようにします。詳細については、「Directory Server のパスワードファイルの作成」 を参照してください。
  8. Directory Server インスタンスを再起動します。
    # dsctl instance_name restart
    NSS データベースにパスワードを設定し、パスワードファイルを作成しないと、Directory Server は NSS データベースのパスワードを要求します。詳細については、「パスワードファイルなしで Directory Server の起動」 を参照してください。

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

Web コンソールを使用して Directory Server で TLS を有効にするには、以下を行います。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. CSR を作成します。「証明書署名要求の作成」を参照してください。
  4. 認証局 (CA) 証明書をインポートします。「Web コンソールを使用した CA 証明書のインストール」を参照してください。
  5. CA が発行するサーバー証明書をインポートします。「Web コンソールを使用したサーバー証明書のインストール」を参照してください。
  6. Server Settings メニューを開き、Security エントリーを選択します。
  7. Security Configuration タブで以下を行います。
    1. Security Enabled をクリックします。
    2. Server Certificate Name フィールドで証明書のニックネームを選択します。
    3. 必要に応じて、サーバーが対応する最小および最大の TLS バージョンの設定を変更します。
    4. 必要に応じて、クライアントが証明書を使用して認証できるように、クライアント認証を設定します。詳細については、「証明書ベースのクライアント認証の使用」 を参照してください。
  8. Save Configuration をクリックします。
  9. 必要に応じて、パスワードファイルを作成して、NSS データベースのパスワードを要求せずに Directory Server が起動するようにします。詳細については、「Directory Server のパスワードファイルの作成」 を参照してください。
  10. Directory Server インスタンスを再起動します。「Web コンソールを使用した Directory Server インスタンスの起動および停止」を参照してください。
    NSS データベースにパスワードを設定し、パスワードファイルを作成しないと、Directory Server は NSS データベースのパスワードを要求します。詳細については、「パスワードファイルなしで Directory Server の起動」 を参照してください。

9.4.1.3. 暗号化暗号の設定

Directory Server は異なる暗号に対応し、その暗号化を有効または無効にできます。暗号化は、暗号化で使用されるアルゴリズムです。クライアントがサーバーとの TLS 接続を開始すると、クライアントは情報の暗号化を好む暗号をサーバーに指示します。サーバーがこれらの暗号のいずれかに対応する場合は、このアルゴリズムを使用して暗号化された接続を確立できます。
「TLS の有効化」に従って暗号化を有効にすると、Directory Server が使用する暗号化を表示および更新できます。
9.4.1.3.1. デフォルトの暗号の表示
cn=encryption,cn=config エントリーで nsSSL3Ciphers パラメーターが設定されていない場合、Directory Server は Network Security Service (NSS) のデフォルトの暗号を使用します。デフォルトの暗号を表示するには、次のコマンドを実行します。
# /usr/lib64/nss/unsupported-tools/listsuites | grep -B1 --no-group-separator "Enabled"         
TLS_AES_128_GCM_SHA256:
  0x1301 TLS 1.3 TLS 1.3 AES-GCM  128 AEAD   Enabled  FIPS Domestic            
TLS_CHACHA20_POLY1305_SHA256:
  0x1303 TLS 1.3 TLS 1.3 CHACHA20POLY1305 256 AEAD   Enabled       Domestic
...
9.4.1.3.2. コマンドラインを使用した Directory Server が使用する暗号の表示および設定

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

Directory Server で対応可能なすべての暗号のリストを表示するには、次のコマンドを実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ciphers list --supported
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
...
これは、有効または無効にできる暗号だけ含まれるリストになります。このリストには、Directory Server が現在使用している暗号は表示されません。

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

Directory Server が現在使用中の暗号を表示するには、以下を入力します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ciphers list --enabled
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
...
さらに、有効/無効にするように設定された暗号を表示できます。
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ciphers list
default
+tls_rsa_aes_128_sha
+tls_rsa_aes_256_sha
...
default キーワードは、NSS が提供する推奨のデフォルト暗号を参照します。「デフォルトの暗号の表示」を参照してください。
重要
Directory Server は、nsSSL3Ciphers 属性からの設定を使用して、実際に使用されている暗号の一覧を生成します。ただし、nsSSL3Ciphers で弱い暗号化を有効にし、allowWeakCiphers パラメーターをデフォルトの off に設定した場合、Directory Server は強力な暗号化のみを使用し、nsSSLSupportedCiphers 読み取り専用属性に表示します。

有効な暗号リストの更新

有効な暗号のリストを更新するには、次のコマンドを実行します。
  1. 現在有効な暗号のリストを表示します。「使用する暗号ディレクトリーサーバーの表示」を参照してください。
  2. 特定の暗号のみを有効にするには、nsSSL3Ciphers 属性を更新します。たとえば、TLS_RSA_WITH_AES_128_GCM_SHA256 暗号のみを有効にするには、次のコマンドを実行します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com security ciphers set "-all,+TLS_RSA_WITH_AES_128_GCM_SHA256"
  3. Directory Server インスタンスを再起動します。
    # dsctl instance_name restart
  4. 必要に応じて、有効な暗号のリストを表示して、結果を確認します。「使用する暗号ディレクトリーサーバーの表示」を参照してください。
9.4.1.3.3. Web コンソールを使用した Directory Server が使用する暗号の表示および設定
Web コンソールを使用して暗号を選択し、必要に応じて更新するには、以下を行います。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Server Settings メニューを開き、Security エントリーを選択します。
  4. Cipher Preferences タブで、Directory Server では、現在有効な暗号が表示されます。
  5. デフォルトとは異なる暗号を使用する場合は、Ciphers Suite フィールドで Default Ciphers を選択し、デフォルトの暗号化を自動的に有効にします。詳細については、「デフォルトの暗号の表示」 を参照してください。
    または、暗号スイート を以下に設定できます。
    • すべての暗号を有効にする All Ciphers。必要に応じて、Deny Specific Ciphers フィールドで特定の暗号を無効にします。
    • すべての暗号を無効にする場合は No Ciphers。必要に応じて、Allow Specific Ciphers フィールドで特定の暗号を有効にします。
  6. Save Cipher Preferences をクリックします。
  7. 暗号のリストを更新した場合は、Directory Server インスタンスを再起動します。「Web コンソールを使用した Directory Server インスタンスの起動および停止」を参照してください。

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

暗号化を有効にし、NSS データベースに設定したパスワードを使用して Directory Server を起動する場合は、以下を行います。
  • systemctl コマンドで ns-slapd Directory Server プロセスが起動すると、systemd はパスワードを求めるプロンプトを表示し、その入力内容を systemd-tty-ask-password-agent ユーティリティーに自動的に渡します。以下に例を示します。
    # systemctl start dirsrv@instance_name
    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 は警告をログに記録し、サービスを起動します。この動作を変更するには、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 に設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-validate-cert=on
    Successfully replaced "nsslapd-validate-cert"
  2. Directory Server インスタンスを再起動します。
    # dsctl instance_name restart

9.4.2. Directory Server が使用する CA 証明書の Red Hat Enterprise Linux のトラストストアへの追加

Directory Server で TLS 暗号化を有効にすると、CA が発行した証明書を使用するようにインスタンスを設定します。クライアントが LDAPS プロトコルまたは LDAP 上の STARTTLS コマンドを使用してサーバーへの接続を確立する場合、Directory Server はこの証明書を使用して接続を暗号化します。クライアントユーティリティーは CA 証明書を使用して、サーバーの証明書が有効であるかどうかを確認します。デフォルトでは、これらのユーティリティーは、サーバーの証明書を信頼していない場合に接続を取り消します。

例9.4 クライアントユーティリティーが CA 証明書を使用しない場合の接続エラーの可能性

クライアントユーティリティーが CA 証明書を使用しない場合、ユーティリティーは TLS 暗号化の使用時にサーバーの証明書を検証できません。これにより、サーバーへの接続に失敗します。以下に例を示します。
  • dsconf
    # dsconf -D "cn=Directory Manager" ldaps://server.example.com:636 config get
    Error: {'desc': "Can't contact LDAP server", 'info': 'error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate in certificate chain)'}
  • ldapsearch
    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x
    Enter LDAP Password: 
    ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Red Hat Enterprise Linux でクライアントユーティリティーを有効にして Directory Server が使用する証明書を検証するには、オペレーティングシステムのトラストストアに CA 証明書を追加します。
  1. Directory Server が使用する CA 証明書のローカルコピーがない場合は、以下を実行します。
    1. サーバーの NSS データベースの証明書をリスト表示します。
      # certutil -d /etc/dirsrv/slapd-instance_name/ -L
      
      Certificate Nickname                       Trust Attributes
                                                 SSL,S/MIME,JAR/XPI
      
      Example CA                                 C,,  
      Server-Cert                                u,u,u
    2. NSS データベースの CA 証明書のニックネームを使用して、CA 証明書をエクスポートします。
      # certutil -d /etc/dirsrv/slapd-instance_name/ -L -n "Example CA" -a > /tmp/ds-ca.crt
  2. CA 証明書を /etc/pki/ca-trust/source/anchors/ ディレクトリーにコピーします。以下に例を示します。
    # cp /tmp/ds-ca.crt /etc/pki/ca-trust/source/anchors/
  3. CA 信頼データベースを再構築します。
    # update-ca-trust
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.