LDAP over TLSを使用することで、LDAPとの通信をよりセキュアに行うことができます。TLSは、開発がすでに終了したSSLプロトコルを引き継いだ、より新しいプロトコルです。
OpenLDAPでは、このTLSを使用することが可能です。OpenLDAPをソースからインストールしている場合は、configure実行時に「--with-tls」オプションを指定して再インストールする必要があります。RPMパッケージを使用している場合は、設定を修正するだけでLDAP over TLS化できます。
LDAP over TLSの使用に際して、CA証明書、サーバ証明書、サーバ用の秘密鍵を用意する必要があります。
まず、前回の「Appendix:ソースからのインストール」の「SSLの設定(サーバ証明書と秘密鍵の用意)」で紹介しているLinux Tips「ApacheでSSLを使うには」を参考に、サーバ証明書と秘密鍵を用意します。FC4のように、OpenSSLパッケージに付属している/usr/share/ssl/certs/slapd.pemを使用することもできます。
CA証明書については、ここではOpenSSLパッケージに付属しているCA証明書/etc/pki/tls/certs/ca-bundle.crt(注)を利用することにします。
注:ディストリビューションによっては/var/ssl/certs/ca-bundle.crt。
OpenLDAP over TLSの設定は、slapd.confとldap.confで行います。
TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt ←CA証明書 TLSCertificateFile /etc/pki/tls/certs/slapd.pem ←サーバ証明書 TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem ←サーバ用の秘密鍵
TLS_CACERTDIR /etc/pki/tls/certs ←CA証明書のあるディレクトリ TLS_CACERT /etc/pki/tls/certs/ca-bundle.crt ←CA証明書
設定が終わったら、slapdデーモンを再起動します。
# /etc/init.d/ldap restart
slapdデーモンの再起動後、ldapsearchを使用してOpenLDAP over TLSの動作を確認します。-HオプションでLDAPサーバのURLを指定する際、「ldaps://」を用いるようにします。
# ldapsearch -x -H "ldaps://ホスト名" -b "o=example,c=jp" -s sub "(uid=*01)"
FC4では、slapd.conf中に「TLS*」行を見つけると、自動的にldapsでの応答が可能になります。そのほかのディストリビューションでは、slapd起動時に「ldaps:///」の指定が必要になる場合があります。
# slapd -h ldaps:///
さらに、必要に応じて「-u LDAPユーザー権限」を追加します。また、通常のldapも同時に稼働させる場合は、
# slapd -h "ldaps:/// ldap:///"
と指定します。
Fedora Coreで自己認証局を使用した場合は、LDAP over TLSで以下のようなエラーが出力され、接続できないことがあります。
ldap_bind: Can't contact LDAP server (-1) additional info: error:14090086:SSL routines:SSL3_ GET_SERVER_CERTIFICATE:certificate verify failed
このような状態になったら、ldap.confに次の1行を追加してサーバ証明書を無視すると接続可能になります。
TLS_REQCERT never
最後の仕上げとして、Apacheの設定を修正します。まず、httpd.confに次の2行を追加します。この2行は、
LDAPTrustedCA /etc/pki/tls/certs/ca-bundle.crt ←CA証明書 LDAPTrustedCAType BASE64_FILE ←CA証明書のフォーマット
次に、AuthLDAPURLを「ldaps」に変更します。
<Location /webdav> (省略) AuthLDAPURL ldaps://LDAPサーバ/ou=sales,o=example,c=jp?uid ←「ldap」を「ldaps」に修正 (省略) </Location>
httpd.confを修正したら、httpdを再起動します。
# /etc/init.d/httpd restart
または、
# apachectl restart
以上で作業は完了です。
最後に、適当なWebDAVクライアントを使って動作を確認します。LDAPではTCP/UDPの389番ポートを使用しますが、LDAP over TLSでは636番を使用します。うまく動作しない場合は、WebサーバとLDAPサーバの間でフィルタされていないかどうかを確認しましょう。Webサーバ上でldapsearchコマンドを使用し、LDAPサーバとの疎通を確認します。疎通ができている場合は、error_logなどのログファイルを参照してください。
Fedora Coreなど最近のディストリビューションは、設定を変更するだけで簡単にWebDAV over SSL+LDAPを実現できます。有志の方々の活躍により、日本語ファイル名の問題も解消されています。プロトコルの仕組み上、Sambaほどの転送効率は出ませんが、セグメント越しの接続が容易に行え、SSLを組み合わせることでセキュリティを確保できるなど、スピードに代えられないメリットを享受できるはずです。
Copyright © ITmedia, Inc. All Rights Reserved.