Contents
概要
LDAPクライアントはLDAPサーバーにBINDしてLDAPの情報を参照する全てですが、本稿でのLDAPクライアントはldapsearch等のLDAPコマンドを差します。CentOS8におけるLDAPクライアントはopenldap-clientsであり、389 Directory Serverのインストール時に合わせてインストールされます。
LDAPサーバーはOpenLDAPから389 Directory Serverに変わりましたが、LDAPクライアントは以前としてOpenLDAPが使用されます。また、LDAPクライアントはLDAPへの接続確認、情報の閲覧、変更等のメンテナンスが目的であり、実際のサービスとしての利用設定は、各クライアントに依存します(例:Linux認証であればSSSD等)。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
設定
証明書信頼設定
LDAPSで接続する場合はLDAPサーバーの証明書を信頼する必要があり、本稿では自己署名証明書を使用するため明示的にルート証明書を指定します。/etc/openldap/ldap.confの最終行に下記を追加すると、/root/ca.crtが署名したサーバー証明書を信頼します。
TLS_CACERT /root/ca.crt
LDAPSの接続確認に問題があり、証明書設定が疑わしい場合は下記の何れかの設定で一時的に証明書の検証を無効化できます。neverとallowは少々挙動が異なり、neverはそもそもサーバー証明書を要求しません。allowはサーバー証明書を要求しますがサーバー証明書の検証に問題があってもセッションを継続します。この為、どちらでもサーバー証明書の検証に問題があるかどうか確認に関しては問題ありません。
証明書検証の無効化により、大概のケースでは証明書、または接続先の指定に問題があることに気づくでしょう。このまま使い続けることもできますが、本来は証明書検証をするべきです。
TLS_REQCERT [never|allow]
OpenLDAPはクライアントであり、サービスの再起動等はありません。
LDAPコマンド
本稿ではldapsearchコマンドを使用して、LDAPサーバーの動作確認を行います。
ldapsearch
まずはLDAPで接続確認をします。-HはLDAPのURI、-Dは接続に使うDN、-Wは対話式でパスワード入力(-wでコマンドにパスワードを含めることができます)、-bはベースDNです。コマンドの書き方はいくつかあるのですが、この書式を良く使います。対象のベースDNが存在しない場合は下記の結果が返ります。
[root@centos ~]# ldapsearch -H ldap://localhost -D "cn=Directory Manager" -W -b dc=si1230,dc=com Enter LDAP Password: password # extended LDIF # # LDAPv3 # basewith scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1
LDAPSの場合はURIをldapsに変更します。また、SSLでは接続先が証明書のコモンネームに一致する必要があるためFQDNを指定する必要があります。一旦の確認であればhostsに書いておけば良いでしょう。出力結果はLDAPと同じです。
[root@centos ~]# ldapsearch -H ldaps://ldap.si1230.com -D "cn=Directory Manager" -W -b dc=si1230,dc=com
ldapsearchのエラー
ldapsearchでありがちなエラーは下記の通りです。何れも大した問題ではないのですが、見慣れないログのために心が折れてLDAPSを断念してしまう人もいますね(LDAPのログがあまり親切でないのもあります)。下記は単純に接続に使用するDNの誤り、またはパスワードの誤り、またはホスト名の誤りです。
ldap_bind: Invalid credentials (49)
下記はLDAPSで接続する際に適切なFQDN(例:ldap.si1230.com)を指定していない場合、またはLDAPのサーバー証明書を信頼していない場合です。
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
参考:LDAPブラウザ
LDAPコマンドのみでもLDAPの管理はできますが、ディレクトリツリー全体の構造の確認、または部分的、一時的な設定変更はLDAPブラウザを使用したほうが良いです。どちらがということではなく、LDAPコマンドとLDAPブラウザの併用が良いと思います。
LDAPブラウザも内部的にLDAPコマンドを実行しているだけです。下記に代表的なLDAPブラウザを挙げます。使用方法はLDAPコマンドを理解していればそれがGUIで表示されるだけですので、本稿では省略します。