WebDAV+SSL+Basic認証の導入

既にネット上に資料が氾濫してますが、なかなか忘れやすいのでメモ。
一度導入した事があるはずなのに数時間も掛かってしまった。

Apache2のインストール、必要なモジュールのインストール、

ここら辺は楽

sudo apt-get install apache2
sudo a2enmod ssl
sudo a2enmod dav
sudo a2enmod dav_fs

OpenSSLで認証局秘密鍵、認証公開鍵、ブラウザ登録用証明書の作成

http://d.hatena.ne.jp/rudeboyjet/20070124/p1
コレは↑のサイトを参考にさせてもらいました
Common Nameへの入れ忘れが無ければ手順どおりに作れるとおもいます。
必要なのはprivate/cakey.pem(秘密鍵)とcacert.crt(認証公開鍵)

sudo mkdir -p /etc/apache2/ssl/private
sudo cp demoCA/cacert.crt /etc/apache2/ssl/
sudo cp demoCA/private/cakey.pem /etc/apache2/ssl/private/

ベーシック認証用ユーザの作成

初回登録時は↓

sudo htpasswd -c /etc/apache2/.htpasswd user1

2回目からは追加なので↓でOK

sudo htpasswd /etc/apache2/.htpasswd user2

DAV用サイト設定

まずはDAV用のディレクトリを作る

sudo mkdir /var/wwwdavssl
sudo chown -R www-data.www-data /var/wwwdavssl

sudo vi /etc/apache2/sites-available/ssl
ここが一番メンドクサイです
http://d.hatena.ne.jp/atasatamatara/20090406/1238989103
ここの「apacheSSLを組み込む」のところをベースに
DAV+ベーシック認証の仕組みを組み込む
http://www.aise.ics.saitama-u.ac.jp/~gotoh/DebianLenny.html
つもりでやりました。で結局

cat /etc/apache2/sites-available/ssl


    DocumentRoot /var/wwwdavssl
    ErrorLog "/var/log/apache2/error_log"
    TransferLog "/var/log/apache2/access_log"

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "/etc/apache2/ssl/cacert.crt"
    SSLCertificateKeyFile "/etc/apache2/ssl/private/cakey.pem"

    
        Dav on
        AuthType Basic
        AuthName DAV
        AuthName "Please Input ID and Password."
        AuthUserFile "/etc/apache2/.htpasswd"
        Require user kazu
        Order deny,allow
        Deny from all
        Allow from all
    

    
        Dav on
        AuthType Basic
        AuthName DAV
        AuthName "Please Input ID and Password."
        AuthUserFile "/etc/apache2/.htpasswd"
        Require user guest
        Order deny,allow
        Deny from all
        Allow from all
    


#でもfirefoxから見えないので、おかしな所がありそう
そしてサイト設定を有効化

sudo a2ensite ssl

mod_encodingで日本語対応

sudo apt-get install libapache2-mod-encoding
sudo vi /etc/apache2/mods-available/encoding.conf
sudo a2enmod encoding

http://kfujio.blog78.fc2.com/blog-entry-58.html
ここを参考にしました

再起動

sudo /etc/init.d/apache2 restart

これでネット上の誰かと共同作業することになっても大丈夫、無いと思うけど

追記 2009/08/03

http://d.hatena.ne.jp/wadap/20080603/1212506793
こんなのがあるんですね、
クライアントにソフトを導入させる、サーバにUNIXユーザアカウントが必要、
などの点が面倒ですが、インターネット上に簡単にファイルサーバを作るだけならアリかもしれません
(SFTPとかでもいいけど)