webdav(apache2-Debian) の構築
- SSLの設定
- 認証局の設定
- 設定
- webdavの設定
- 準備
- ユーザ認証
- 設定
- 最後の仕上げ
- まだ未解決のトラブル集
- 参考にした URL
Debian で横着。
apt-get でとってきた apache2 には最初から openssl がついてくる。
よって、速攻設定に入れる。
コマンド "apache2-ssl-certificate" で一発。
でも、オプション "-days hoge" してやらないと、発行される証明書は1ヶ月限定になってしまう。
今回は10年(!)で作ってやった(十年もすれば少しは成長もするだろう)。
- # apache2-ssl-certificate -days 3650
これだけ。
できあがった秘密鍵と証明書を確認しておく
それでは、SSL の設定に入る。
Debian 印の apache2 の設定には特徴があるが、
それはここで書いたので省く。
基本的には、
- a2enmod でモジュールを読み込ませる
- /etc/apache2/sites-available/以下で、あらかじめ用意されている設定ファイルを編集する
- a2ensite で設定ファイルを有効にする
- apache2 を再起動する
という手順をとる。
SSL モジュールを読み込ませる。
方法は簡単。
- # a2enmod (Module name?と訊かれたら "ssl" と打ってやれば良い)
SSL 設定のためのサンプルファイルを /etc/apache2/sites-available/ に
- # cd /etc/apache2/sites-available
- # zcat /usr/share/doc/apache2/examples/ssl.conf.gz > ssl
SSL の設定ファイルを編集する。
- # vi /etc/apache2/sites-available/ssl
- L.83-85
の "_default_" 部分を自分のドメインにした上で、コメントアウト。
その上で、どのディレクトリでも SSL が効くように次の設定を施してやった
- L.88-92
" General setup for the virtual host" の
DocumentRoot,ServerName,ServerAdmin,ErrorLog,TransferLog をそれぞれ自分のサイトに合わせて
設定する。
- L.110
"SSLCertificateFile /etc/apache2/ssl.crt/server.crt" の /ssl.crt/server.crt を
先ほど作った /ssl/apache.pem に変更する
- L.118
"SSLCertificateKeyFile /etc/apache2/ssl.key/server.key" の /ssl.key/server.key を
先ほど作った /ssl/*** に変更する
この SSL の設定ファイルを有効にする。
- a2ensit (Site name?と訊かれたら "ssl" と打ってやれば良い)
この時点ではまだ、davフォルダになる予定の "/var/dav" がないので、作る。
- # mkdir /var/dav
- # chown -R www-data.www-data /var/dav/
最後に apache2 を再起動する
- # /etc/init.d/apache2 restart
何もエラーメッセージがでなければ、成功。
win/mac 双方に対応する webdav システムを作る。
ポイントになるのは、apache2 の設定ファイル (/etc/apache2/site-available/webdav) だ。
debian の apache2 には最初から webdav 用のモジュールが入っている。
まずこれを確認し、利用できるように設定する。
やりかたは、/etc/apache2/mods-available/ から該当ファイルを ln -s で
/etc/apache2/mods-enable/ にリンク(Symlnk)するだけだ。
まずは確認。
dav.load, dav_fs.conf, dav_fs.load があることを確認。
ここには windows+basic認証+ssl で文字化けを防いでくれる、"mod-encoding" がない。
"mod-encoding" は apache2 用に "libapache2-mod-encoding" として
apt line に用意されているので、インストールしておく。
- # aptitude install libapache2-mod-encoding
また、デフォルトでは mac+digest認証 で使う "authdigest" 関連のモジュールが
利用可能になっていない。これも利用可能にしておく。
これでモジュール類はすべて用意されたので、それぞれのモジュールを利用可能にする。
- # ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/
- # ln -s /etc/apache2/mods-available/dav_fs.conf /etc/apache2/mods-enabled/
- # ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enabled/
- # ln -s /etc/apache2/mods-available/encoding.load /etc/apache2/mods-enabled/
続いて、ユーザ認証にとりかかる。方針としては
- windows (ssl+basic認証) は htpasswd
- macOSX (digest認証) は htdigest
である。htpasswd,htdigest ともに、debian ではデフォルトで用意されている。
まずは basic認証(htpasswd)。
htpasswd の書式は
- # htpasswd -c(create) パスワードファイル場所 ユーザ名
である。
# htpasswd -c /var/.htpasswd i-folder
New password:
Re-type new password:
Adding password for user i-folder
続いて、digest認証(htdigest)
htdigest の書式は
- # htdigest -c(create) パスワードファイル場所 所属グループ名(realem) ユーザ名
である。
# 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 しておく。
- # ln -s /etc/apache2/mods-available/auth_digest.load /etc/apache2/mods-enabled/
仕上げとなるのは、"/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 では設定ファイルは
- /etc/apache2/sites-available/
以下に置かれ、それが
- /etc/apache2/sites-enabled/
に Symlnk(ln -s) され
- # /etc/init.d/apache2 reload
されてはじめて、その設定ファイルが起動する。
逆に、/etc/apache2/sites-enabled/ 以下のシンボリックリンクを消せば
その設定ファイルは中止される。
この一連の手続き [Symlnk張り/外し] を Debian-apache2 では
- # a2ensite (/etc/apache2/sites-available/ から /etc/apache2/sites-enabled/ への Symlnk 張り)
- # a2dissite (/etc/apache2/sites-enabled/ にある Symlnk 外し)
でできるようになっている。
前置きが長くなったが、今回の /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.
設定ファイル以外の問題として、何度かはまったことがあるので、メモしておく。
- 認証(htpasswd, htdigest)ファイルの置き場所
うまく設定ファイルを読み込まないとき、慌てて 認証ファイルをそのまま適当な場所へ何度か
コピーして実験してみたことがある。しかし、設定ファイルで認証ファイルの場所を書き換えた
場合は、そのつど認証ファイルを作成しなおした方がよい。