では、WebDAV over SSLの導入と設定を行います。ここで一気にLDAPまで導入しないのは、うまく動作しなかった場合に問題を切り分けやすくするためです。
ちなみに、@ITのLinux Tipsにも、WebDAV関係の記事が存在します。
Linux Tips
・WebDAVサーバを構築するには
・WebDAVサーバにアクセスするには
・WebDAVサーバにSSLとBasic認証を適用するには
ディストリビューションの多くはApacheを標準で採用しており、そのほとんどがHTTPSまで使用できるようになっています。本記事ではFedora Core 4(以下FC4)を前提に解説しますが、ほかのディストリビューションでも大差はありません。ソースからインストールする場合については、「Appendix:ソースからのインストール」を参照してください。
まずインストールされているモジュールを確認します。必要なモジュールは、
です。これらはApache本体のパッケージとは別にインストールする必要があります。FC4の場合、WebDAVに必要なmod_dav.soとmod_dav_fs.soはApache本体のパッケージに付随していますが、HTTPSに必要なmod_ssl.soとその設定ファイルは別途インストールする必要があります。
# rpm -qa | grep mod_ssl mod_ssl-2.0.54-10.2
インストールされていない場合は、yumコマンドでオンラインインストールします。
# yum install mod_ssl
次に、公開するディレクトリを作成します。ここでは「/var/www/webdav」をWebDAV用に利用することにします。また、WebDAVは読み込み権限だけでなく、書き込み権限も必要です。ディレクトリの作成後、OwnerとGroupの変更を忘れずに実行しましよう。Owner/Groupは、httpd.confで指定されているApacheデーモンのものを指定します。
User apache Group apache
# mkdir /var/www/webdav # chown apache.apache /var/www/webdav
公開ディレクトリを作成したら、httpd.confの設定を行います。httpd.confの場所については、第1回を参照してください。
#モジュールの読み込み LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so #ロックファイルのための設定 <IfModule mod_dav_fs.c> # Location of the WebDAV lock database. DAVLockDB /var/lib/dav/lockdb </IfModule> #for WebDAV Alias /webdav "/var/www/webdav" ←URLは「https://サーバ/webdav」 <Location /webdav> DAV on SSLRequireSSL ←SSLの有効化 AuthType Basic ←BASIC認証 AuthName "WebDAV Server" AuthUserFile "/etc/httpd/.htpasswd" ←認証ファイルの指定 Require valid-user ←AuthUserFileで指定したファイルに登録されている全ユーザー </Location>
上のサンプルでは、mod_sslの読み込みなどSSLに関係した設定を行っていないように見えますが、ディストリビューション提供のmod_sslをインストールした場合、SSL関係の設定は/etc/httpd/conf.d/ssl.confで行います。そのため、「SSLRequireSSL」の1行で「WebDAV over SSL」が可能となります。RPMなどのパッケージを使わずソースからインストールした場合は、「Appendix:ソースからのインストール」を参考に、サーバ証明書やサーバ用秘密鍵などを用意してssl.confを修正します。
このままでは、WindowsとLinuxの文字コードの違いから、日本語のファイル/ディレクトリ名で文字化けが起こります。そこで、文字コードの変換を行うmod_encodingをインストールします。mod_encodingは有志により作成されたモジュールで、詳細は「WebDAV Resources JP」(http://webdav.todo.gr.jp/)で確認できます。FC3用のRPMパッケージが存在し、これはFC4でも使用可能です。
# wget http://yum.sera.desuyo.net/3/i386/mod_encoding-20040616-1.fc3.webdavjp.1.i386.rpm # rpm -ivh mod_encoding-20040616-1.fc3.webdavjp.1.i386.rpm
mod_encodingをインストールすると、以下のようなの内容の/etc/httpd/conf.d/mod_encoding.confが追加されます。
EncodingEngine on SetServerEncoding UTF-8 ←サーバの文字コードはUTF-8のみ対応 DefaultClientEncoding UTF-8 CP932 EUCJP-MS ←クライアント側の文字コード AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8 AddClientEncoding "Microsoft .* DAV" UTF-8 CP932 AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932 AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8 AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932 AddClientEncoding "RMA/*" CP932 AddClientEncoding "xdwin9x/" CP932 AddClientEncoding "cadaver/" UTF-8 EUCJP-MS AddClientEncoding "Mozilla/" EUCJP-MS
DefaultClientEncodingには、自動判定を行うJA-AUTO-SJIS-MSも用意されていますが、上での設定では自動判定を行わずCP932を使用するようにしています。CP932はシフトJIS(Shift_JIS)のMicrosoft拡張といわれるもので、EUCJP-MSはMicrosoft拡張を反映したEUC対応のエンコードです。そのため「?」や「?」などの機種依存文字も正しく各文字コードにマッピングされます。
ここでは暫定的に、htpasswdを使ったBASIC認証を利用します。以下の要領で/etc/httpd/.htpasswdを作成します。Apacheデーモンのユーザー権限で読み込みできる必要があります。
# htpasswd -c /etc/httpd/.htpasswd ユーザー名 New password: ←パスワードの入力 Re-type new password: ←再度パスワードの入力 Adding password for user ユーザー名
ここまでの設定が終わったら、
# apachectl configtest
を実行してhttpd.confの文法チェックを行っておきましょう。
httpd.confの確認が終わったら、Apacheを再起動します。
# apachectl restart
Apacheを再起動して設定を反映させたら、次は動作確認です。先に紹介したLinux Tipsでは、SSLを用いないWebDAVの確認方法が解説されています。WebDAV over SSLの場合も基本的には同じであるため、ここでは注意点に簡単に触れるだけにとどめます。
「サーバへ接続」ダイアログボックスを開き、画面1のように「サービスの種類」で「セキュア WebDAV(HTTPS)」を選択し、「ポート番号」に「443」を入力します。
「マイ ネットワーク」の「ネットワーク プレースの追加」アイコンをダブルクリックして「ネットワーク プレースの追加ウィザード」(画面2)を起動し、アドレス指定の際に「https」を使用します。
機種依存文字を含む日本語を名前に使っているファイル/ディレクトリのアップロード/ダウンロードを試し、動作を確認します。
なお、ファイルやディレクトリは名前がUTF-8に変換されて/var/www/webdav下に作成されます。lsやrmなど、サーバ上のシェルでもそのまま操作できます。
次回は、今回構築した環境にLDAP認証を組み込んでアクセス権を設定する方法を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.