第7章 証明書ベースの認証の設定

Directory Server は、LDAP クライアントの証明書ベースの認証と、レプリケーショントポロジーなどのサーバー間接続をサポートしています。

設定に応じて、クライアントは証明書を使用して認証できるか、認証する必要があります。サーバーは、証明書の subject フィールドの属性に基づいて証明書を検証した後、ディレクトリー内でユーザーを検索します。検索でユーザーエントリーを 1 つだけ返すと、Directory Server はこのユーザーを使用してすべての操作を行います。必要に応じて、認証に使用される証明書が、ユーザーエントリーの userCertificate 属性に保存されている Distinguished Encoding Rules (DER) 形式の証明書と一致するように設定できます。

証明書ベースの認証を使用する利点:

  • 効率の向上: 証明書データベースのパスワードを使用して認証し、その後のすべてのバインド操作または認証操作でその証明書を使用する方が、バインド識別名 (DN) とパスワードを繰り返し提供するよりも効率的です。
  • セキュリティーの向上: 証明書ベースの認証は、証明書ベースの認証では公開鍵の暗号化が使用されるため、証明書以外のバインド操作よりも安全です。攻撃者は、ネットワーク全体でバインド認証情報を傍受できません。証明書やデバイスが失われた場合は、PIN がなければ役に立たないため、フィッシング攻撃などのサードパーティーの干渉の影響を受けません。

7.1. 証明書ベースの認証の設定

前提条件

  • Directory Server で TLS 暗号化を有効にしている。
  • ネットワークセキュリティーサービス (NSS) データベースで認証局 (CA) 証明書の CT フラグを設定します。

手順

  1. /etc/dirsrv/slapd-instance_name/certmap.conf ファイルを作成し、証明書から Directory Server ユーザーへ情報をマッピングします。

    certmap default         default
    default:DNComps         dc
    default:FilterComps     mail,cn
    default:VerifyCert      on
    
    certmap example         cn=Example CA
    example:DNComps

    この設定では、cn=Example CA によって発行された証明書の場合、この発行者の DNComps パラメーターが空に設定されているため、Directory Server は証明書のサブジェクトからベース DN を生成しません。さらに、FilterCompsVerifyCert の設定は、デフォルトのエントリーから継承されます。

    cn=Example CA とは異なる発行者 DN を持つ証明書は、デフォルトエントリーの設定を使用し、証明書のサブジェクトの cn 属性に基づいてベース DN を生成します。これにより、ディレクトリー全体を検索せずに、Directory Server が特定の DN で検索を開始できます。

    すべての証明書について、Directory Server は、証明書のサブジェクトの mail 属性および cn 属性を使用して検索フィルターを生成します。ただし、件名に mail 属性が存在しない場合、Directory Server は自動的に証明書の e 属性の値を件名に使用します。

  2. 証明書ベースの認証を有効にします。たとえば、証明書ベースの認証をオプションとして設定するには、次のように入力します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com security set --tls-client-auth="allowed"

    --tls-client-auth=required オプションを使用して、証明書ベースの認証を必須として設定します。

  3. オプション: 証明書ベースの認証を必須として設定した場合は、nsslapd-require-secure-binds パラメーターを有効にします。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-require-secure-binds=on

    この設定により、ユーザーは暗号化されていない接続を使用して証明書ベースの認証をバイパスできなくなります。

  4. オプション: Directory Server がバインド要求の認証情報の代わりに証明書の ID を使用する必要がある場合は、EXTERNAL 簡易認証およびセキュリティー層 (SASL) メカニズムを使用するように Directory Server を設定します。

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-force-sasl-external=on

    この設定では、Directory Server は証明書内の ID 以外のバインド方法を無視します。

  5. インスタンスを再起動します。

    # dsctl instance_name restart

次のステップ:

  • 認証証明書がユーザーの userCertificate 属性に格納されている証明書と一致する必要があるように Directory Server を設定した場合は、証明書をユーザーエントリーに追加します。詳細は、「ユーザーへの証明書の追加」 を参照してください。