連載
» 2006年01月17日 00時00分 公開

実用 Apache 2.0運用・管理術(7):Apacheで作るファイルサーバ(LDAP認証編) (3/4)

[鶴長鎮一,@IT]

LDAP over TLSでよりセキュアに

 LDAP over TLSを使用することで、LDAPとの通信をよりセキュアに行うことができます。TLSは、開発がすでに終了したSSLプロトコルを引き継いだ、より新しいプロトコルです。

 OpenLDAPでは、このTLSを使用することが可能です。OpenLDAPをソースからインストールしている場合は、configure実行時に「--with-tls」オプションを指定して再インストールする必要があります。RPMパッケージを使用している場合は、設定を修正するだけでLDAP over TLS化できます。

LDAPサーバの準備

 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 ←サーバ用の秘密鍵
slapd.conf
TLS_CACERTDIR /etc/pki/tls/certs ←CA証明書のあるディレクトリ
TLS_CACERT /etc/pki/tls/certs/ca-bundle.crt ←CA証明書
ldap.conf

 設定が終わったら、slapdデーモンを再起動します。

# /etc/init.d/ldap restart
slapd再起動

 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の設定変更

 最後の仕上げとして、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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。