xserver
Home クッキー及びWeb ビーコンについて




WebDAV の概要

WebDAVを使って、外部から自宅に安全にアクセスできるようにします。




■mod_dav と mod_dav_fs の組み込み

 ここでは、すでに、OpenSSLがインストールされていて、WebDAVが使用できるようになっているものとして解説していきます。もし、WebDAV用のモジュールである mod_dav.cと mod_dav_fs.cが組み込まれていない場合は、Apache を再コンパイルしてモジュールを組み込んでおきましょう。モジュールが組み込まれているかどうか確認するには、httpd -l コマンドを実行します。また、SSL を使用してWebDAV フォルダにアクセスするのならば、mod_ssl.c も組み込まれている必要があります。外部からWebDAVアクセス時には認証が必須となりますので、mod_auth_digestモジュールも必要となります。mod_digest とは異なるので注意してください。

# /usr/local/apache2/bin/httpd -l
Compiled in modules:
mod_ssl.c
mod_dav.c
mod_dav_fs.c
mod_auth_digest.c
・・・



 もし、必要となるモジュールが組み込まれていない場合は、以下のようにして、Apache を再コンパイルしなおしてください。

$ ./configure --with-mpm=worker \
                         --enable-dav \
                         --enable-ssl \
                         --with-ssl=/usr/local/ssl \
                         --enable-auth_digest \
                         --enable-shared=yes
$ make
$ su
# make install



■WebDAVの設定

 httpd.conf を開いて、以下に示す行を追加しておきます。一行目のAlias では、別名定義を記述しておきます。わかりやすく言えば、http://サーバー名/test というURLで指定した際に、ドキュメントルートの/doc の中のディレクトリにマッピングされる事になります。この時、/test というディレクトリ自体は存在している必要はありません。

 <IfModule>~からはコンテナで囲み、WevDAV の設定を行います。DAV On は、DAV ファイルシステムプロバイダを有効にします(mod_dav_fs モジュールで実装)。SSLRequireSSL ディレクティブを指定すると、https:// ~ で始まるURL以外はアクセスを拒否するようになります。これは、誤ってhttp://~で始まるURLでアクセスできないようにする場合に効力を発揮します。

Alias /test "/home/kororo/public_html/doc"

<IfModule mod_dav.c>
   DAVMinTimeout 600    //ロックの最小生存時間(秒単位)を指定

      <Location /test>
         DAV On          //WebDAV を有効にする
         SSLRequireSSL     //SSL を有効にする
         AuthType Digest
         AuthName "member"
         AuthDigestFile /usr/local/apache2/.htdigest
</Location>

</IfModule>
DavLockDB /usr/local/apache2/var/DavLock

 最後の、DavLockDBでは、複数人が同時にファイルを操作できないようにロックするための指定です。注意したいのは、ロックデータベースファイルのあるディレクトリは Apache が実行されている User と Group に書き込み権限がある必要があります。何の事をいっているかわからない方は大抵、ユーザー、グループ共に、nobody に設定されているはずです。

# mkdir /usr/local/apache2/var
# chown apache.apache /usr/local/apache2/var

 また、/home/kororo/public_html/doc ディレクトリも apache ユーザーが書き込めるように適切にパーミッションを設定しておきます。/doc ディレクトリにファイルを書き込むと、ユーザー/グループ共に、apache ユーザーの権限で書き込まれます。

# chown apache.apache /home/kororo/public_html/doc


◎認証用のディレクティブ
 AuthType Basic もしくは、Digest を指定する事ができます。最初の文字が大文字である点に注意して記述してください。

 AuthName パスワード入力画面にでてくる「領域名」(realm)に表示される文字列
 AuthUserFile ユーザー用のパスワードファイルの場所。一般ユーザーはドキュメントルートより上位の階層にパスワードファイルを置くようにしてください。

 AuthDigestFile システム全体に適用されるパスワードファイルの場所。ドキュメントルートとは異なる場所にパスワードファイルを保存した場合に指定します。


■DIGEST認証用のファイルを作成する[ .htaccess を用いる場合]

 Digest認証用のファイルは、見られては困るものなので極力、ドキュメントルートから外れたディレクトリに保存するのが無難です。通常は、ドキュメントルートの一階層上、もしくは、ServerRoot ディレクティブで指定したPATH内に保存しておけばいいでしょう。ここでは、ServerRootディレクトリ直下にパスワードファイルを作成してみます。-c オプションは新規ユーザー作成時のオプションで、あらたにユーザーを追加したい場合は、-c オプションをつける必要はありません。

# cd /usr/local/apache2
# htdigest -c .htdigest "member" kororo
Adding password for kororo in realm member.
New password:

 .htdigest のファイル名は任意です。ドキュメントルート内に配置する場合は、必ず、「.ht 」で始まるファイル名を指定しましょう。"member" は、パスワード入力ダイアログボックスに表示される名称を入力します。最後の、kororo がアクセスに使用するユーザー名です。パスワードの入力を求められたら、2度パスワードを入力します。

 次に、ディレクトリごとの認証をかけるために、.htaccess を用います。認証をかけたいディレクトリの一階層上に .htaccess を作成し、以下のように記述しておきます。AuthType~以降はmod_auth_digest モジュールを使用し、DIGEST認証を使ってアクセスするための指定です。HTTP認証でも可能ですが、WebDAVを使う以上、HTTP認証では危険(エンコードされたパスワードが平分で流れるため)なので極力Digest認証を使うようにしてください。 なお、SSL を使用してアクセスする場合はこの限りではありません。ユーザーごとに認証をかける場合は、AuthDigestFile ではなく、AuthUserFile を指定します。最後の、require valid-user では、パスワードファイルに記述されたユーザーのみアクセスを許可する指定です。

AuthType Digest
AuthName "member"
AuthDigestFile /usr/local/apache2/.htdigest
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
      require valid-user
</Limit>

■Apache の起動

 以上の設定を終えたら、Apache を起動させます。SSL対応で起動させるには以下のコマンドを入力します。パスワードを聞かれるので、秘密鍵を作成した際のパスワードを入力します。起動後、443番がListen 状態になっていることを確認しておきます。

# apachectl sslstart
# netstat -an | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN

■クライアントからアクセスする[ Windowsクライアントの場合]

 それでは、実際にWindowsクライアントからアクセスしてみましょう(Linuxクライアントからアクセスする方法は後述)。「マイネットワーク」を開いて、「ネットワークプレースを開く」をクリックします。



 ネットワークプレースの場所を入力します。URLは、https://サーバー名/エイリアス名 です。SSLを使用しているので、https となることに注意してください。「次へ」をクリックしたとき、WindowsXP の場合はもしかしたら、Office2000 のCDを求められるかもしれませんので、そのときは、CDをいれてインストールを行ってください(なにをインストールしているのか知りませんが…)。



 「セキュリティ警告」がでるので、「はい」をクリックします。



 パスワードの入力を求められるので、Digest認証でパスワードを作成した際のパスワードを入力してください。



 これで、正常にWebDAV でアクセスができるようになりました。きちんとファイルのコピー/削除/リネーム等が行える事を確認してください。



■クライアントからアクセスする[ Linuxクライアントの場合]

 Linux クライアントからアクセスするためには、cadaver というクライアントソフトウェアが必要となります。RedHat の場合は、RPMパッケージが用意されているので、インストールしておいてください。apt-get でインストールしたら、依存関係で、neon というソフトウェアまでインストールされました(^▽^;)

# apt-get install cadaver
Committing changes...
Preparing... ############################ [100%]
1:cadaver ############################# [ 50%]
2:neon ############################### [100%]

 ソースコードからインストールする場合は以下のサイトからダウンロードしてきてください。普通に、./configure→make→make install でインストールできると思います。

◎cad
Version cadaver-0.22.1
Homepage http://www.webdav.org/
Download http://www.webdav.org/cadaver/
Install cadaver-0.22.1.tar.gz

 それでは、実際に接続してみましょう。ほとんどFTPの操作と同様なので解説はもはや必要ないでしょう。

$ cadaver https://linux.kororo.jp/doc
WARNING: Untrusted server certificate presented for `linux.kororo.jp':
Issued to: kororo.jp, linux, Tokyo, Setagaya, JP
Issued by: kororo.jp, linux, Tokyo, Setagaya, JP
Certificate is valid from May 2 04:41:44 2004 GMT to May 2 04:41:44 2005 GMT
Do you wish to accept the certificate? (y/n) y
Authentication required for member on server `linux.kororo.jp':
Username: kororo // ユーザー名の入力
Password:  //パスワード入力
dav:/doc/> ls
Listing collection `/doc/': succeeded.
aaa.mp3 4188131 May 2 16:33
sin.mp3 7946028 May 2 15:22
dav:/doc/> get aaa.mp3
Downloading `/share/aaa.mp3' to aaa.mp3:
Progress: [=============================>] 100.0% of 4188131 bytes succeeded.
dav:/doc/> quit
Connection to `linux.kororo.jp' closed.


■日本語ファイル名の扱い

 WebDAVはデフォルトでは、日本語に対応していないため、mod_encoding というDSOモジュールを用いなければなりません。もう既に試した方はわかっているとおもいますが、このモジュールを組み込まないと、日本語ファイル名が文字化けしたり、正常に書き込めなかったりします。なので、下記のWebDAV Resources JPからモジュールをダウンロードしてきてください。

Version WebDAV Resources JP
Homepage http://webdav.todo.gr.jp/
Download http://webdav.todo.gr.jp/download/
Install mod_encoding 20021209.tar.gz
mod_encoding.apache2.20020611a-2

 まず、mod_encoding 20021209.tar.gz を伸張・解凍し、その中のmod_encoding.so をmod_encoding.apache2.20020611a-2 に置き換えます。その後で、iconv_hookライブラリのコンパイルとインストールを行います。以上の操作で、/usr/local/lib 以下に、libiconv_hook.so がインストールされます。

$ tar xzvf mod_encoding-20021209.tar.gz
$ cd /usr/local/src/mod_encoding-20021209
$ cp ../mod_encoding.c.apache2.20020611a-2 mod_encoding-20021209/mod_encoding.c
cp: overwrite `mod_encoding.c'? y

$ cd lib/
$ ./configure
# make && make install

 次に、mod_encodingのコンパイルとインストールを行います。以上の作業を終えたらApacheを再起動すれば日本語に対応できるようになっています。

$ ./configure --enable-debug \
                         --with-apxs=/usr/local/apache2/bin/apxs \
                         --with-iconv-hook=/usr/local/include
$ make
$ gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
# cp mod_encoding.so /usr/local/apache2/modules/


LoadModule encoding_module modules/mod_encoding.so

<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding UTF-8 MSSJIS EUC-JP


AddClientEncoding "cadaver/" EUC-JP
AddClientEncoding "Microsoft .* DAV 1.1" ASCII MSSJIS UTF-8
AddClientEncoding "Microsoft .* DAV" UTF-8 MSSJIS
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 MSSJIS
AddClientEncoding "(Microsoft .* DAV 1.1)" MSSJIS UTF-8
AddClientEncoding "Microsoft-WebDAV*" UTF-8 MSSJIS
AddClientEncoding "RMA/*" MSSJIS
AddClientEncoding "xdwin9x/" MSSJIS
AddClientEncoding "Mozilla/" EUC-JP
</IfModule>







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: