1.7. 証明書ベースの認証の設定
Directory Server は、LDAP クライアントの証明書ベースの認証と、レプリケーショントポロジーなどのサーバー間接続をサポートしています。
設定に応じて、クライアントは証明書を使用して認証できるか、認証する必要があります。サーバーは、証明書の subject フィールドの属性に基づいて証明書を検証した後、ディレクトリー内でユーザーを検索します。検索でユーザーエントリーを 1 つだけ返すと、Directory Server はこのユーザーを使用してすべての操作を行います。必要に応じて、認証に使用される証明書が、ユーザーエントリーの userCertificate
属性に保存されている Distinguished Encoding Rules (DER) 形式の証明書と一致するように設定できます。
証明書ベースの認証を使用する利点:
- 効率の向上: 証明書データベースのパスワードを使用して認証し、その後のすべてのバインド操作または認証操作でその証明書を使用する方が、バインド識別名 (DN) とパスワードを繰り返し提供するよりも効率的です。
- セキュリティーの向上: 証明書ベースの認証は、証明書ベースの認証では公開鍵の暗号化が使用されるため、証明書以外のバインド操作よりも安全です。攻撃者は、ネットワーク全体でバインド認証情報を傍受できません。証明書やデバイスが失われた場合は、PIN がなければ役に立たないため、フィッシング攻撃などのサードパーティーの干渉の影響を受けません。
1.7.1. 証明書ベースの認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Directory Server で TLS 暗号化を有効にしている。
-
ネットワークセキュリティーサービス (NSS) データベースで認証局 (CA) 証明書の
CT
フラグを設定します。
手順
/etc/dirsrv/slapd-<instance_name>/certmap.conf
ファイルを作成し、証明書から Directory Server ユーザーへ情報をマッピングします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定では、
cn=Example CA
によって発行された証明書の場合、この発行者のDNComps
パラメーターが空に設定されているため、Directory Server は証明書のサブジェクトからベース DN を生成しません。さらに、FilterComps
とVerifyCert
の設定は、デフォルトのエントリーから継承されます。cn=Example CA
とは異なる発行者 DN を持つ証明書は、デフォルトエントリーの設定を使用し、証明書のサブジェクトの cn 属性に基づいてベース DN を生成します。これにより、ディレクトリー全体を検索せずに、Directory Server が特定の DN で検索を開始できます。すべての証明書について、Directory Server は、証明書のサブジェクトの
mail
属性およびcn
属性を使用して検索フィルターを生成します。ただし、件名にmail
属性が存在しない場合、Directory Server は自動的に証明書の e 属性の値を件名に使用します。証明書ベースの認証を有効にします。たとえば、証明書ベースの認証をオプションとして設定するには、次のように入力します。
dsconf <instance_name> security set --tls-client-auth="allowed"
# dsconf <instance_name> security set --tls-client-auth="allowed"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --tls-client-auth=required
オプションを使用して、証明書ベースの認証を必須として設定します。オプション: 証明書ベースの認証を必須として設定した場合は、
nsslapd-require-secure-binds
パラメーターを有効にします。dsconf <instance_name> config replace nsslapd-require-secure-binds=on
# dsconf <instance_name> config replace nsslapd-require-secure-binds=on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定により、ユーザーは暗号化されていない接続を使用して証明書ベースの認証をバイパスできなくなります。
オプション: Directory Server がバインド要求の認証情報の代わりに証明書の ID を使用する必要がある場合は、
EXTERNAL
簡易認証およびセキュリティー層 (SASL) メカニズムを使用するように Directory Server を設定します。dsconf <instance_name> config replace nsslapd-force-sasl-external=on
# dsconf <instance_name> config replace nsslapd-force-sasl-external=on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定では、Directory Server は証明書内の ID 以外のバインド方法を無視します。
インスタンスを再起動します。
dsctl <instance_name> restart
# dsctl <instance_name> restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ:
認証証明書がユーザーの
userCertificate
属性に格納されている証明書と一致する必要があるように Directory Server を設定した場合は、証明書をユーザーエントリーに追加します。詳細は、「ユーザーへの証明書の追加」 を参照してください。
1.7.2. ユーザーへの証明書の追加 リンクのコピーリンクがクリップボードにコピーされました!
証明書ベースの認証を設定すると、認証に使用される証明書がユーザーの userCertificate
バイナリー属性に格納されている証明書と一致する必要があるようにサーバーを設定できます。この機能を有効にした場合は、影響を受けるユーザーの証明書をディレクトリーエントリーに追加する必要があります。
前提条件
- Directory Server で証明書ベースの認証を有効にしている。
- サーバーによって信頼されている認証局 (CA) によって発行されたクライアント証明書がある。
- クライアント証明書は識別符号化規則 (DER) 形式である。
-
クライアント証明書は、サーバーの
/etc/dirsrv/slapd-<instance_name>/certmap.conf
で設定された要件を満たしている。
手順
証明書が DER 形式でない場合は、変換します。たとえば、証明書を Privacy Enhanced Mail (PEM) から DER に変換するには、次のように入力します。
openssl x509 -in /home/user_name/certificate.pem -out /home/user_name/certificate.der -outform DER
# openssl x509 -in /home/user_name/certificate.pem -out /home/user_name/certificate.der -outform DER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーの
userCertificate
属性に証明書を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
証明書ベースの認証を使用してユーザーとして認証します。
CA 証明書、ユーザーキー、およびユーザー証明書の対応するパスに、以下の環境変数を設定します。
LDAPTLS_CACERT=/home/user_name/CA.crt LDAPTLS_KEY=/home/user_name/user.key LDAPTLS_CERT=/home/user_name/user.der
LDAPTLS_CACERT=/home/user_name/CA.crt LDAPTLS_KEY=/home/user_name/user.key LDAPTLS_CERT=/home/user_name/user.der
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、現在のユーザーの
~/.ldaprc
ファイルでTLS_CACERT
、TLS_KEY
、およびTLS_CERT
パラメーターを設定します。サーバーに接続します。
ldapwhoami -H ldaps://server.example.com -Y EXTERNAL
# ldapwhoami -H ldaps://server.example.com -Y EXTERNAL dn: uid=example,ou=people,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow