webdav(apache2-Debian) の構築

メニュー

  1. SSLの設定
    1. 認証局の設定
    2. 設定
  2. webdavの設定
    1. 準備
    2. ユーザ認証
    3. 設定
    4. 最後の仕上げ
    5. まだ未解決のトラブル集
  3. 参考にした URL

SSLの設定

Debian で横着。
apt-get でとってきた apache2 には最初から openssl がついてくる。
よって、速攻設定に入れる。
メニューへ

認証局の設定

コマンド "apache2-ssl-certificate" で一発。
でも、オプション "-days hoge" してやらないと、発行される証明書は1ヶ月限定になってしまう。
今回は10年(!)で作ってやった(十年もすれば少しは成長もするだろう)。

これだけ。
step01

できあがった秘密鍵と証明書を確認しておく

step02
メニューへ

設定

それでは、SSL の設定に入る。
Debian 印の apache2 の設定には特徴があるが、 それはここで書いたので省く。
基本的には、
  1. a2enmod でモジュールを読み込ませる
  2. /etc/apache2/sites-available/以下で、あらかじめ用意されている設定ファイルを編集する
  3. a2ensite で設定ファイルを有効にする
  4. apache2 を再起動する
という手順をとる。

SSL モジュールを読み込ませる。
方法は簡単。

step03

SSL 設定のためのサンプルファイルを /etc/apache2/sites-available/ に

SSL の設定ファイルを編集する。
  1. L.83-85
    の "_default_" 部分を自分のドメインにした上で、コメントアウト。
    その上で、どのディレクトリでも SSL が効くように次の設定を施してやった
    • NameVirtualHost *:443
    step04
  2. L.88-92
    " General setup for the virtual host" の DocumentRoot,ServerName,ServerAdmin,ErrorLog,TransferLog をそれぞれ自分のサイトに合わせて 設定する。
    step05
  3. L.110
    "SSLCertificateFile /etc/apache2/ssl.crt/server.crt" の /ssl.crt/server.crt を 先ほど作った /ssl/apache.pem に変更する
    step06
  4. L.118
    "SSLCertificateKeyFile /etc/apache2/ssl.key/server.key" の /ssl.key/server.key を 先ほど作った /ssl/*** に変更する
    step07

この SSL の設定ファイルを有効にする。

step08

この時点ではまだ、davフォルダになる予定の "/var/dav" がないので、作る。

最後に apache2 を再起動する

何もエラーメッセージがでなければ、成功。
メニューへ

webdavの設定

win/mac 双方に対応する webdav システムを作る。
ポイントになるのは、apache2 の設定ファイル (/etc/apache2/site-available/webdav) だ。
メニューへ

準備

debian の apache2 には最初から webdav 用のモジュールが入っている。
まずこれを確認し、利用できるように設定する。
やりかたは、/etc/apache2/mods-available/ から該当ファイルを ln -s で /etc/apache2/mods-enable/ にリンク(Symlnk)するだけだ。

まずは確認。

step09
dav.load, dav_fs.conf, dav_fs.load があることを確認。

ここには windows+basic認証+ssl で文字化けを防いでくれる、"mod-encoding" がない。
"mod-encoding" は apache2 用に "libapache2-mod-encoding" として apt line に用意されているので、インストールしておく。

step10

また、デフォルトでは mac+digest認証 で使う "authdigest" 関連のモジュールが 利用可能になっていない。これも利用可能にしておく。

これでモジュール類はすべて用意されたので、それぞれのモジュールを利用可能にする。

メニューへ

ユーザ認証

続いて、ユーザ認証にとりかかる。方針としては である。htpasswd,htdigest ともに、debian ではデフォルトで用意されている。
まずは basic認証(htpasswd)。
htpasswd の書式は である。

# htpasswd -c /var/.htpasswd i-folder
New password: 
Re-type new password: 
Adding password for user i-folder

続いて、digest認証(htdigest)
htdigest の書式は である。

# htdigest -c /var/.htdigest i-folder i-folder
Adding password for i-folder in realm i-folder.
New password: 
Re-type new password: 

digest認証の場合、別途モジュールが必要だ。
最後に、忘れず /etc/apache2/mods-avialable/ から "auth_digest.load" を /etc/apache2/mods-enabled/ に symlink しておく。
メニューへ

設定

仕上げとなるのは、"/etc/apache2/sites-available/webdav" の設定である。
とはいってもこれは全面的に [debian-users:42824] に負ったものでオリジナルではない。

上記のページから当該の部分をコピーし、自分のサーバ用にセッティングすればよい。
一つ注意しなければならないのは、上記ページの設定にある "" は "" に書き換えることである。
それほど長くないので、全文を掲載しておく(もちろん、ここにある設定部分は偽装してある)。


# SSL required for Windows,Linux
NameVirtualHost 192.168.1.129:443

# SSL required for Windows,Linux
NameVirtualHost 192.168.1.129:443


        ServerAdmin webmaster@kreisel.fam.cx
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/apache.pem
        SSLCertificateKeyFile /etc/apache2/ssl/238a6fef.0

        EncodingEngine on
        NormalizeUsername on
        SetServerEncoding UTF-8
        DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
        AddClientEncoding UTF-8  "Microsoft-WebDAV-MiniRedir/"
        AddClientEncoding SJIS   "Microsoft .* DAV 1\.1$"
        AddClientEncoding UTF-8  "Microsoft .* DAV$"
        AddClientEncoding SJIS   "xdwin9x/"
        AddClientEncoding "cadaver/" EUC-JP

        DocumentRoot /var/www/dav/picure
        
                Options FollowSymLinks MultiViews
                AllowOverride None
                #Order allow,deny
                #allow from all
        
		
		Alias /picure "/var/www/dav/picure"
        
                Options +Indexes
                DAV On
                SSLRequireSSL
                AuthType        Basic
                AuthName       www-data
                AuthUserFile    "/var/dav/.htpasswd"
                
                        Require valid-user
                
        
        ServerSignature On
        ErrorLog /var/log/apache2/error.log


## Non-SSL + Digest Authorization for Mac OS X Finder
NameVirtualHost 192.168.1.129:8000


        ServerAdmin webmaster@kreisel.fam.cx
        DocumentRoot /var/www/dav/picure
        
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        

        # Shared Folder for Members
        
                Options +Indexes
                DAV On
                AuthType        Digest
                AuthName       picure
                AuthDigestFile    "/var/dav/.htdigest"
                
                        Require valid-user
                
        



メニューへ

最後の仕上げ

ここまでの設定が終わったら、設定ファイルを apache2 に読み込ませる。
しつこいようだが、Debian-apache2 では設定ファイルは

以下に置かれ、それが に Symlnk(ln -s) され されてはじめて、その設定ファイルが起動する。
逆に、/etc/apache2/sites-enabled/ 以下のシンボリックリンクを消せば その設定ファイルは中止される。

この一連の手続き [Symlnk張り/外し] を Debian-apache2 では

でできるようになっている。

前置きが長くなったが、今回の /etc/apache2/sites-available/webdav の設定では

してやれば、よい。
以下は実際の動作

# a2ensite
Which site would you like to enable?
Your choices are: default picure picure-old ssl webdav
Site name? webdav <=丁寧にも上の行に利用できる設定ファイルがある。webdavと入力
Site webdav installed; run /etc/init.d/apache2 reload to enable.

最後に /etc/init.d/apache2 を reload しろ、と丁寧に教えてくれているので、 そうする。

# /etc/init.d/apache2 reload
Reloading web server config...done.


逆に、設定ファイルを修正したいときなどは、一度、a2dissite して当該のファイルを外した後、 /etc/apache2/sites-available/ 上で編集すれば良い。
最後に windows / mac から webdav へ入ってみて、ログインできるようであれば成功である。


# a2dissite
Which site would you like to disable?
Your choices are: 000-default picure ssl webdav
Site name? webdav
Site webdav disabled; run /etc/init.d/apache2 reload to fully disable.

メニューへ

まだ未解決のトラブル集

設定ファイル以外の問題として、何度かはまったことがあるので、メモしておく。
  1. 認証(htpasswd, htdigest)ファイルの置き場所
    うまく設定ファイルを読み込まないとき、慌てて 認証ファイルをそのまま適当な場所へ何度か コピーして実験してみたことがある。しかし、設定ファイルで認証ファイルの場所を書き換えた 場合は、そのつど認証ファイルを作成しなおした方がよい。
メニューへ

参考にした URL

メニューへ