Debian の Sarge が公開されて早、えーとどのくらいだったか忘れたけどせこせこといじってます。
久方ぶりの Linux なので簡単なツールの使い方すらあやふやな状態なので、基本的にこれが最善の手段だとは思っていませんが、とりあえず出来たことからちらほらとまとめていこうかと。
と言うわけで一発目は SSL と Webdav を Apache2 に導入してみました。
サーバ機として使っているのは ThinkPad の A21e. CUIで運用するぶんにはこのくらいのスペックで十分ですね。
Debian なんてカテゴリを作ったはいいけどそんなに更新するのかどうかっつう話で、まぁとりあえずしばらくの間はちろちろと更新していくつもりです。
/usr/lib/ssl# cp music/CA.sh .
CA.shっつうのが証明書やら秘密鍵を作るためのスクリプトです。それ以外のファイルと混同してしまわないようにひとつ上のディレクトリにコピりましょう。
/usr/lib/ssl# bash CA.sh -newca
新しく証明書を発行するっつう意味です。これを走らせると英語で色々と質問されます。
基本的に自己署名なので適当でいいと言えばそうなのですが、ある程度は真面目に答えましょう。
一番最初に聞かれるパスフレーズはきちんと覚えておくか、メモっておかないと後で泣く羽目になります。
質問に全て答えてシェルに戻ったら作業ディレクトリに demoCA っつうディレクトリが出来ているはずです。
そのディレクトリ配下の private ディレクトリを 700 に private/cakey.pem を 600 に chmod しましょう。
/usr/lib/ssl# chmod 600 demoCA/private/cakey.pem
/usr/lib/ssl# chmod 700 demoCA/private
といった感じです。
なんで chmod するのかってぇと、要するにコイツが鍵なので、やっぱ鍵は大事にしまっておかないとねってことなのですよ。
んで、この作業で作られるのが cacert.pem というのが証明書にあたるファイルです。これをベリサイン辺りの認証局に認証してもらうと正規の証明書が発行されるわけですよ。「信頼できる第三者に認証された」ってヤツですね。
でも、そもそも今回の実験では DDNS でドメインを運用しているので、SSL の本質から考えると第三者の認証ってのは現実的にムリだし、そもそも金がかかるのでそれについては言及しません。
ああ、cakey.pem が証明書の秘密鍵です。
NameVirtualHost *:443
#<VirtualHost _default_:443>
<VirtualHost *:443>
DocumentRoot "/usr/share/apache2/default-site/htdocs"
ServerName サーバ機のFQDN:443
ServerAdmin 管理者のメールアドレス
ErrorLog /var/log/apache2/error_ssl_log
TransferLog /var/log/apache2/access_ssl_log
とりあえずこんな感じにすれば問題ないでしょう。
アクセスログとエラーログのファイル名を変えたのは、通常のアクセスログと混同しないためです。
んで a2ensite ssl.conf で SSL を有効にして a2enmod ssl で SSL のモジュールを有効にします。
/etc/init.d/apache2 restart でもって Apache2 を再起動したら完了です。
https://FQDNでアクセスしてみましょう。出来なかったらどこかの STEP でつまづいているはずです。
それでも基本的に余り面倒な部分も少なく、今回 server.key などと言った名前付けの規則に関しても設定ファイルやスクリプトをじっくり見れば全て書かれています。
さて、お次は Webdav です。こいつのための SSL だったわけです。
<IfModule mod_dav.c>
Alias /home /mnt/nas/home
DAVLockDB /var/lock/DAV/DAVLock
<Directory>
Dav On
AllowOverride None
Options None
AuthType Basic
AuthName "Login"
AuthUserfile /etc/apache2/.dav_passwd
require valid-user
</Directory>
</IfModule>
基本的には Webdav 化したいディレクトリに Dav On と記述するだけでいいのですが、LAN 内で運用する場合のように IP アドレスでアクセス制限がかけられないことを前提としている(インターネット経由でのアクセス)ので、Basic 認証を併記します。
Basic 認証など Apache に関する設定については割愛します。
DAVLockDB /var/lock/DAV/DAVLock が Webdav でのファイル操作に関するロックファイルです。
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
これで mod_header が有効になります。
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUserName on
SetServerEncoding UTF-8
DefaultClientEncoding CP932 SJIS EUC-JP-MS
AddClientEncoding "cadaver/" EUC-JP-MS
AddClientEncoding "Microsoft .* DAV" CP932
AddClientEncoding "xdwin9x" SJIS
</IfModule>
これで Linux と Windows 間でのエンコーディングを解決します。
これらを追記して a2enmod dav_fs とすることでモジュールを有効化して Apache を再起動します。
どうでしょう。アクセスできましたか?
はじめは備忘録的な書き方にしようかと思ったのですが、それだとブログのエントリとして公開する意味はないし、何よりも備忘録的なものはもう存在するので、ということで STEP UP 形式にしてみました。
ちなみに俺は当初 libapache-svn の存在を知らず、iconvでかなりはまりました。
そして、俺の運用方法は smbmount した NAS を仮想ディレクトリとして使っています。FTPに比べて安定しているし、SSL 接続なのでセキュリティの面でも安心感はあります。
と、ここまで書いた気づいたのは「このブログを読んでいる人ほぼ全員が Linux に親しんでいない」という事実です。
このエントリーのトラックバックURL:
http://o29.s1.xrea.com/spais/mt-tb.cgi/45