Apache HTTP Server 2.4.1 on Ubuntu

Apache HTTP Server 2.4.1 を Ubuntu 10.04 LTS (Sakura VPS 512MB)に入れてみました。
今回試したかったことは、

  • Ubuntu(64bit)に入れる
  • mod_luaを使う
  • luaはソースコンパイルで組み込む(5.2を試したいため > が、失敗。後述)
  • mod_sedを使う

です。


必要となるパッケージをインストール

aptitude install libreadline6-dev  # for lua
aptitude install gcc
aptitude install libpcre3 libpcre3-dev 
aptitude install openssl libssl-dev

必要となるソースをダウンロード・展開

cd /usr/local/src
wget http://www.lua.org/ftp/lua-5.1.5.tar.gz
tar zxf lua-5.1.5.tar.gz
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.4.1.tar.gz
tar zxf httpd-2.4.1.tar.gz
wget http://ftp.riken.jp/net/apache//apr/apr-1.4.6.tar.gz
tar zxf apr-1.4.6.tar.gz
wget http://ftp.riken.jp/net/apache//apr/apr-util-1.4.1.tar.gz
tar zxf apr-util-1.4.1.tar.gz

Lua5.1 コンパイル・インストール

  • 最新の5.2を導入したかったが、ApacheModuleとしてうまく動かなかったため5.1.5で導入
  • /usr/local/lua へインストール
cd ./lua-5.1.5
64bitOSの場合は src/Makefile を修正する (参考)
  • (org)-> CFLAGS= -O2 -Wall $(MYCFLAGS)
  • (new)-> CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS)
コンパイル・インストール
make linux
make install INSTALL_TOP=/usr/local/lua

apr/apr-util コンパイル・インストール

  • httpd-2.4.1 の依存ライブラリであるaprを導入
  • /usr/local/apr へインストール
  • aptitudeで導入しても問題ないと思われる
cd ./apr-1.4.6
./configure --prefix=/usr/local/apr
make
make install
cd ..
cd ./apr-util-1.4.1
./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr
make
make install

httpd-2.4.1 コンパイル・インストール

  • /usr/local/apache24 へインストール
  • mod_ssl / mod_proxy* / mod_lua の有効化
  • soとしてモジュール生成
cd ..
cd ./http-2.4.1
./configure --prefix=/usr/local/apache24 --with-apr=/usr/local/apr --with-lua=/usr/local/lua --enable-so --enable-ssl=shared --enable-proxy=shared --enable-lua
make
make install
/usr/local/apache24/bin/apachectl start

mod_lua を試す

/usr/local/apache24/conf/httpd.conf を編集(以下の2行を追加)
 LoadModule lua_module modules/mod_lua.so
 AddHandler lua-script .lua
/usr/local/apache24/htdocs/example.lua を新規作成 (参考)
require "string"

function handle(r)
    r.content_type = "text/plain"
    r:puts("Hello Lua World!\n")

    if r.method == 'GET' then
        for k, v in pairs( r:parseargs() ) do
            r:puts( string.format("%s: %s", k, v) )
        end
    elseif r.method == 'POST' then
        for k, v in pairs( r:parsebody() ) do
            r:puts( string.format("%s: %s", k, v) )
        end
    else
        r:puts("unknown HTTP method " .. r.method)
    end
end
変更の反映
/usr/local/apache24/bin/apachectl configtest
/usr/local/apache24/bin/apachectl stop
/usr/local/apache24/bin/apachectl start
luaの動作確認 (ブラウザから /example.lua へアクセスし、以下が表示されることを確認)

Hello Lua World!

mod_sed を試す

/usr/local/apache24/conf/httpd.conf を編集
<Directory "/usr/local/apache24/htdocs/sed"> 
AddOutputFilter Sed html 
OutputSed "s/TAITO/ZUNTATA/g" 
OutputSed "s/SEGA/SST/g" 
OutputSed "s/FALCOM/JDK/g" 
</Directory> 
/usr/local/apache24/htdocs/sed/example.html を新規作成
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
  <title>sed sample</title>
</head>
<body>
  KONAMI<br/>
  TAITO<br/>
  SEGA<br/>
  GEMADELIC<br/>
  T&amp;E<br/>
  FALCOM1.6.0<br/>
</body>
</html>
変更の反映
/usr/local/apache24/bin/apachectl configtest
/usr/local/apache24/bin/apachectl stop
/usr/local/apache24/bin/apachectl start
mod_sed の動作確認 (ブラウザから /sed/example.html へアクセスし、以下が表示されることを確認)

KONAMI
ZUNTATA
SST
GEMADELIC
T&E
JDK1.6.0

備考:Lua 5.2.0 について

Lua 5.2.0 のコンパイル・インストール、および httpd-2.4.1 のコンパイル・インストールまでは問題ないが、LoadModule で mod_lua.so を有効にしようとすると以下のエラーが発生した
/usr/local/apache24/bin/apachectl configtest
httpd: Syntax error on line 148 of /usr/local/apache24/conf/httpd.conf: Cannot load /usr/local/apache24/modules/mod_lua.so into server: /usr/local/apache24/modules/mod_lua.so: undefined symbol: lua_objlen
  • 5.1.5 で同様の手順を行った場合にはエラーが発生しなかった

QEMU on Fedora8 でブリッジ接続

Fedora8 で、qemuvirt-managerを使ってWindows仮想マシンを作成。

  • CPU:Athron X2 BE-2350
  • MEM:4GB
  • OS :FedoraCore8 (Fedora7からUpgrade) / 2.6.24.5-85.fc8

QEMU仮想マシンは、仮想マシンマネージャ(virt-manager)経由で作成した。
その際、仮想マシンの作成自体は問題なく行えるのだが、NICをブリッジ接続させるのが少々難しい。

ブリッジ接続ではなく、仮想ネットワーク接続(仮想LAN+NAT)であれば仮想マシンマネージャで簡単にできそうだが、ブリッジ接続は(brctlコマンドなどを使って)色々と手間がかかりそうだ。
そこで思いついたのが
xenのブリッジ接続用スクリプトを利用して、qemu仮想マシンをブリッジ接続する」
という方法。で、さっそくチャレンジ。

まず、以下のものをインストールする。

Xenはインストールするものの、そのサービス自体は使用しない。
使用するのは「/etc/xen/scripts/network-bridge」あたりだけなので、Kernelは(xen-kernelではない)通常のKernelで起動すること。
んでもって、/etc/init.d/xen-bridge を以下のような内容で作成。

#!/bin/bash
#
# xen-bridge    Script to start and stop the Xen-Bridge.
#
# chkconfig: 2345 98 01
# description: Starts and stops the Xen control daemon.
### BEGIN INIT INFO
# Provides:          xen-bridge
# Required-Start:    $network
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:     3 4 5
# Default-Stop:      0 1 2 6
# Default-Enabled:   yes
# Short-Description: Start/stop xen-bridge
# Description:       Starts and stops the Xen-bridge.
### END INIT INFO

start() {
        echo "Starting xen-bridge script"
        /etc/xen/scripts/network-bridge start
}

stop() {
        echo "Stopping xen-bridge script"
        /etc/xen/scripts/network-bridge stop
}

RETVAL=0
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $RETVAL

んでもって「chkconfig --add xen-bridge」とかして自動起動するようにしておく。
おそらく「network」サービスより後に起動する必要があるので、起動は98、終了は01とした(networkはそれぞれ10と90)。
設定が終わったら、Fedoraを再起動。設定が誤っている場合は、ssh等でリモート接続できなくなるので注意。
なお、xendやxendomainのサービスは停止しておいても構わない。

で、再起動が完了したとする。そこで ifconfig -a 等を実行すると「eth0」と「peth0」が作成されていることが確認できる。
通常、1つめのNIC「eth0」は、論理的なIFも物理的なIFも意味合い的に含む(と思っている)が、xen-bridgeが起動すると論理IFは「eth0」、物理IFは「peth0」と分離されるらしい(eth0がpeth0にブリッジ接続しているイメージ。多分・・・)。
この状態であれば、Virt-Managerによりqemu仮想マシンを作成する際に、NICとして「eth0」を接続して、peth0へブリッジ接続することができる。具体的には、仮想マシン作成ウィザードの「ホストネットワークに接続」の項で、共有物理装置として「peth0」を選択することができるようになる。

なお、仮想マシンNICには(peth0と一致しない)適当なMACアドレスを設定しておくのがよいかも。

VistaでSambaが踊れない

Windows Vista のファイルコピーが遅い上に、予想時間も極めていい加減なのはよく知られいるところですが、Vista以外のOSと(Windowsファイル共有で)ファイル送受信を行うと、これまた遅い。
特に、Sambaの共有フォルダに対して書き込みを行うと、遅いだけでなくしばしば失敗する(私の環境では)。
数MB程度なら成功率は高いが、100MB単位になると大抵失敗・・・で、調べてみると、こんな情報が。

Windows Vista ベースのコンピュータとそれ以前のオペレーティング システムの間で、サイズの大きいファイルをコピーすると、予想よりもコピー操作に時間がかかることがある


とりあえず、Vista側で

としたところ、現象は収まったようです。
その後、1GB単位のファイル書き込みは問題なく行えているので大丈夫でしょう。


Vista SP1 では改善されるんでしょうかね・・・。

ちなみに環境は

を1.0Gbpsで接続中。


2008/02/17 追記
以下の辺りにある対応も効果があるかも。
Vistaからは、デフォルトのLAN Managerの認証レベルが引き上げられてしまっているようです。
レジストリの変更になるようですが、XP以前と同様のレベルに落とすことも必要かもしれません。

WebDAVクライアント

[WebDAV]WebDAVクライアント TeamFileクライアント

WebDAV構築以後、いろいろとクライアントを探していましたが、なかなかいいものが見つかりませんでした。
NetDriveはフリーだと日本語処理に問題あるし、最新版は有料だし・・・ということで探していると、こんなのを見つけました。

TeamFileクライアント(フリーウェア)

正直、お勧めです。

JBoss4.0.3SP1でのサーバ証明書設定

環境

JBossHTTPSをしばらく使用していましたが、SSLHandshakeException が発生するようになったため、設定を見直してみました。なるべくJBossのデフォルトの設定を生かす形にしています。
なお、JBossのインストール先を「%JBOSS_HOME%」、JDK/JREのインストール先を「%JAVA_HOME%」という環境変数に設定しているものとします。
また、問題を見つけた方は是非激しくツッコミお願いいたします

手順

とした場合

C:\>keytool -genkey -alias rmi+ssl -keyalg RSA -keystore chap8.keystore -validity 3650
キーストアのパスワードを入力してください:  rmi+ssl
姓名を入力してください。
  [Unknown]:localhost
組織単位名を入力してください。
  [Unknown]:
組織名を入力してください。
  [Unknown]:
都市名または地域名を入力してください。
  [Unknown]:
州名または地方名を入力してください。
  [Unknown]:
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown でよろしいですか?
  [no]:  y

<rmi+ssl> の鍵パスワードを入力してください。
        (キーストアのパスワードと同じ場合は RETURN を押してください):

C:\>
    • 出力された「chap8.keystore」を「%JBOSS_HOME%\server\default\conf」にコピーします
  • ローカルCAによる証明書を信頼させる(JDKの cacerts に追加)
    • クライアント証明の作成
      • クライアント証明書は一時的に使用するだけなのでファイル名は任意。ここでは「client.cer」としています。
      • キーストアのパスワードは「rmi+ssl」としています(%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat55.sar/server.xml の「SSL/TLS Connector configuration ...」にある「keystorePass」の設定値とあわせる)。
keytool -export -alias rmi+ssl -keystore clientKeys -file client.cer -keystore %JBOSS_HOME%/server/default/conf\chap8.keystore
キーストアのパスワードを入力してください:  rmi+ssl
証明書がファイル <client.cer> に保存されました。
    • キーストアへの証明書の登録
      • JDKのキーストアのデフォルトパスワードは「changeit」なので、それを使用しています。
keytool -import -alias rmi+ssl -file client.cer -noprompt -trustcacerts -keystore %JAVA_HOME%/jre/lib/security/cacerts
キーストアのパスワードを入力してください:  changeit
証明書がキーストアに追加されました。
      • キーストアへの証明書の登録時にエラーになる場合
      • 既にキーストアに存在すると言われた場合は、以下の手順で削除してから再度追加を行う
keytool -delete -alias rmi+ssl -keystore %JAVA_HOME%/jre/lib/security/cacerts
キーストアのパスワードを入力してください:  changeit
    • 以上で、%JAVA_HOME%\jre\lib\security\cacerts に証明書が追加され、ローカルCAによる証明書を信頼することになります。
    • なお、当然のことながら %JBOSS_HOME%/server/default/deploy/jbossweb-tomcat55.sar/server.xml でデフォルトでコメントアウトされているHTTPSの設定を有効にしておくこと。

FC5でApache/SSL/WebDAV/Digest認証

FedoraCore5 をセットアップしたので、何か新しいものに手を出してみよう、ということで、WebDAVに挑戦。
でも、単純にWebDAVを立ち上げるだけであれば、他にも資料はいくらでもありそうなので、ちょっと踏み込んでやってみた。
ポイントは

  • 外部公開。証明書は自己証明。
  • 当然、日本語対応。
  • SSLの暗号強度は高めで(AES-256bit-CBC)。
  • 使えない環境があろうが構いません。Digest認証で。

ちなみに、以前行った作業を「思い起こしながら」まとめた資料ですので、記述あやまりや矛盾など、山ほどある可能性があると思います。
ので、もし問題を見つけた方は是非激しくツッコミお願いいたします

環境

  • OS :Fedora Core5
  • Apache HTTP Server 2.2.2-1.2
  • OpenSSL 0.9.8a-5.2
  • mod_ssl 2.2.2-1.2

導入メモ

ドメイン名の取得

外部公開するということで、適当なドメイン名を取得します。
メジャー度では DynDNS あたり、容易さでは ddo.jp あたりでしょうか。
ここでは「myserver.hogehoge.com」というドメイン名を取得したとしましょう。

各パッケージの導入

Apache HTTP Server、OpenSSL、mod_ssl などがインストールされていなければ導入します。

(例:確認)
# rpm -qa | grep httpd
# rpm -qa | grep openssl

インストールされていないものについては yumにて導入します。

(例:導入)
# yum install openssl

など。

日本語対応のため mod_encoding を導入

こちらで、FC5 の apache 2.2 対応版、mod_encoding のrpmを作成されているすばらしい方がいらっしゃいます。こちらからmod_encoding-2.2.0-1.i386.tar.gzをダウンロードして導入します。

(例:確認)
# wget http://www.aconus.com/~oyaji/ftp/download_f.cgi?name=fc5/mod_encoding/mod_encoding-2.2.0-1.i386.tar.gz
# tar zxvf ./mod_encoding-2.2.0-1.i386.tar.gz
# rpm -e mod_encoding
# rpm -ivh ./mod_encoding-2.2.0-1.i386.rpm

ちなみに私の環境ではどうも上手く導入できなかったので、強引に入れてしまいました。

rpm -ivh --nodeps --force ./mod_encoding-2.2.0-1.i386.rpm

原因調べろって?エラーログは?・・・すいません、時間が無かったので勢いでやってしまいました(^^;

サーバ証明書の作成

以下のファイルを作成するものとする

  • サーバ用証明書 myserver.pem
  • サーバ用公開鍵 myserver.csr
  • サーバ用秘密鍵 myserver.key

こちらをとても参考にさせてもらいました。

# cd /etc/pki/tls/certs
# make myserver.key


AES-256bit-CBC秘密鍵を作成

# umask 77 ; openssl genrsa -aes256 > myserver.key

最低限の入力で済まそうとする場合は
最初の「Enter pass phrase:」「Verifying - Enter pass phrase:」には任意のパスワードを入力。
「Country Name 」に「JP」
「Common Name」にサーバ名(今回は「myserver.hogehoge.com」)
でいいと思います。他はデフォルト(Enter押下)でOK。
最後のほうで聞かれるパスワードも空でよいです。


httpd起動時のパスワード入力を不要にするため、サーバー用秘密鍵からパスワード削除

# openssl rsa -in myserver.key -out myserver.key

パスワードを聞かれたら、秘密鍵作成時に入力したパスワードを入力してください。

  • サーバ用公開鍵作成
# cd /etc/pki/tls/certs
# make server.csr
# umask 77 ; openssl req -new -key myserver.key -out myserver.csr

サーバ証明書を作成するためには、mod_sslに付属する「sign.sh」を使用します。
恐らくrpmでmod_sslを導入した場合には存在しないと思われるので、このあたりからダウンロードします。
例えば mod_ssl-2.8.28-1.3.37.tar.gz ならば

# cd /etc/pki/tls/certs
# wget http://www.modssl.org/source/mod_ssl-2.8.28-1.3.37.tar.gz
# tar zxvf .//mod_ssl-2.8.28-1.3.37.tar.gz

などとする。そこで

# ./mod_ssl-2.8.28-1.3.37/pkg.contrib/sign.sh myserver.csr

Sign the certificate? [y/n]:」には「y」
「1 out of 1 certificate requests certified, commit? [y/n]」にも「y」を入力する。


CA証明書をブラウザにインポートするための myserver.pem ファイル作成

(有効期間[-days オプション]は適当に設定。私は10年にしてしまいました・・・)
# openssl x509 -in myserver.csr -out myserver.pem -req -signkey myserver.key -days 3650
(root のみ参照できるようにパーミッション変更)
# chmod 400 myserver.*

なお、上記の例では「/etc/pki/tls/certs」にダウンロードしたり、展開したりとしてしまっていますが、その辺りは上手く読み替えてください。

ファイル名や配置先は、後の手順にある ssl.conf の設定とあわせます。

# cd /etc/pki/tls/certs
(サーバ秘密鍵:ssl.conf の SSLCertificateKeyFile の設定とあわせる)
# mv myserver.key /etc/pki/tls/private
(サーバ証明書:ssl.conf の SSLCertificateFile の設定とあわせる)
# mv myserver.pem /etc/pki/tls/certs  (今回の場合は同じ場所なので、このコマンドは不要ですね)

サーバの公開鍵については、証明書を作成する過程での成果物のようなので、気になるのであれば消してもOKと思われます。

apache 設定ファイルを変更
(サーバ名)
ServerName www.example.com:80
↓
#ServerName www.example.com:80
ServerName myserver.hogehoge.com:80

上記の設定は、HTTPS限定であれば必須では無いかな?まぁおまけってことで。
また、以下の設定があることを確認します。

(ダイジェスト認証用モジュール)
LoadModule auth_digest_module modules/mod_auth_digest.so
(WebDAV用モジュール)
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
(WevDAVモジュール用設定)
#
# WebDAV module configuration section.
#
<IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
</IfModule>


それと、

<IfModule mod_headers.c>
        Header add MS-Author-Via "DAV"
</IfModule>

という記述を追加します。私は末尾に追加しました。
Windows2000/XP から Webフォルダ接続する場合の対応だそうです。

(サーバ名)
#ServerName www.example.com:443
↓
#ServerName www.example.com:443
ServerName myserver.hogehoge.com:443
(サーバ証明書(公開鍵)指定)
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
↓
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/myserver.pem
(サーバ証明書の秘密鍵指定)
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
↓
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/myserver.key

まぁ、鍵ファイルの名前や場所は、先の手順で作成した鍵の結果と合わせてもらえれば任意です。

  • /etc/httpd/conf.d/mod_encoding.conf の内容の確認。

私の環境の場合は以下の通り。

LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_encoding.c>
    EncodingEngine on
    NormalizeUsername on
    SetServerEncoding UTF-8
#    DefaultClientEncoding UTF-8 CP932 JA-AUTO-SJIS-MS SJIS
    DefaultClientEncoding JA-AUTO-SJIS-MS UTF-8 CP932 SJIS
    AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8
    AddClientEncoding "Microsoft .* DAV" UTF-8 CP932
    AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932
    AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8
    AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932
    AddClientEncoding "RMA/*" CP932
    AddClientEncoding "xdwin9x/" CP932
#    AddClientEncoding "cadaver/" UTF-8 EUCJP-MS
    AddClientEncoding "cadaver/" EUCJP-MS UTF-8
    AddClientEncoding "Mozilla/" EUCJP-MS
</IfModule>

「EncodingEngine」は当然「on」であること、また「NormalizeUsername」はWindowsからのWebフォルダ接続の場合の不具合を解消してくれるらしいので、忘れずに「on」にすること。

WebDAV 設定ファイルを変更

/etc/httpd/conf.d/webdav.conf

  • 認証方法はパスワードファイルを使ったDigest認証とする
  • 公開URLは「https://myserver.hogehoge.com/web/dav」とする
  • 公開先のローカル位置は「/var/pub/webdav」とする
  • アクセスできるユーザは「myuser」とする
  • httpd.confの「User」「Group」で指定されているユーザ、グループに即したアクセス権を設定しておく
Alias /web/dav "/var/pub/webdav"
<Location "/web/dav">
        DAV On
        SSLRequireSSL
        ##ファイル置き場は自動インデックスリスト表示
        Options FollowSymLinks Indexes
        ## 認証設定
        ## Digest認証:AuthNameはRealm名(htdigestで指定)
        AuthType Digest
        AuthName "member"
        AuthDigestProvider      file
        AuthUserFile    conf/.htdigest
        AuthDigestDomain /web/dav/
        ##
        AuthGroupFile   /dev/null
        <LimitExcept OPTIONS>
                Require user myuser
        </LimitExcept>
        ## 名前解決できるアクセス元のみ許可
        HostnameLookups On
        ## アクセス制限
        Order deny,allow
        Deny from all
        Allow from all
</Location>
  • DAV
    • 当然「on」で。
  • SSLRequireSSL
    • HTTPS必須としたいので、忘れずに記述する。
  • Options
    • 任意に設定してください。私はファイル一覧表示ぐらいはしたかったので、上記の設定となっています。
  • AuthType
    • 当然「Digest」で。
  • AuthName
    • ブラウザによっては、ユーザ・パスワード入力ダイアログの表示名となるが、Basic認証と違って単なる表示用の文字列ではありません。この後の手順でユーザを作成する際の realm(groupのようなもの?権限セットらしいです)名となるので、その辺りを考慮して設定すること。
  • AuthDigestProvider
    • 今回はパスワードファイルを使用しますので「file」で。
  • AuthUserFile
    • パスワードファイルの配置先。相対パスで記述した場合は、httpd.conf の「ServerRoot」の位置からの相対パスになる模様。
  • LimitExcept OPTIONS
    • WindowsWebDAVクライアントではDigest認証時にOPTIONSでエラーになることへの対応。こちらを参照。
WebDAV アクセス用のユーザを作成
  • WebDAVでDigest認証を行うためのユーザを作成します。
  • OSユーザを合わせて作成する必要はありません。むしろ作らないほうがよいでしょう。
# htdigest -c /etc/httpd/conf/.htdigest 'member' myuser

パスワードファイルへのユーザ作成が初回の場合のみ「-c」をつけます。
1つ目のパラメータは、パスワードファイルのパスを指定します。
2つ目のパラメータは「realm」(ssl.conf の AuthName とあわせる)を指定します。
3つ目のパラメータは、追加するユーザ名を指定します。
パスワードの入力を求められるので、任意のパスワードを設定してください。

httpd の起動
# service httpd restart

として、httpdを起動(再起動)して、確認してみましょう。
ブラウザで「https://myserver.hogehoge.com/web/dav」にアクセスすると認証ダイアログが出るので、ユーザ名とパスワードを入力してうまく閲覧できればOKです。


以上。と思う。漏れありそうだな。。。

ちなみに
  • WindowsXPからWebフォルダ接続した場合は、日本語も問題なく使用できるのですが、Windows2000からだと日本語ファイル名を扱おうとするとエラーではじかれてしまいます。調査中です・・・。
  • 2006/08/23 追記:ちなみにFC5標準のapache2.2 では、HTTPSを使用するにあたり、起動時にパラメータを指定する必要はありません(従来の -DSSL)。ですので、/etc/sysconfig/httpd などへの設定も不要です。
  • 2006/08/29 追記SELinuxは無効にした状態で作業を行いました。ですので、SELinuxを有効にされている方は、その辺りの設定も必要になると思います。

ロギング用関数

log4perlのインストールが許されない環境でロギングをしたかったので、参考ページをもとに、試しに作ってみたロギング用関数。
出力先に関してのエラー処理なども組み込んでいないですし、どこまで実用になるかはわかりませんが、とりあえず私の環境では充分な感じ。
もっといい方法があれば教えてもらえると助かります。

環境

ソース

#-----------------------------------------#
# ログ出力 関数                           #
#   第2引数に「1」を指定すると           #
#   標準出力にも出力(省略時は出力せず)  #
#-----------------------------------------#
sub logger
{
($msg, $STDOUT_FLG) = @_;
	$msg = "[" . getTime() . "] " . $msg . "\r\n";
	
	open(LOG, "+>>/tmp/log.log");
	flock(LOG, 2);
	@log = <LOG>;
	seek(LOG, 0, 0);
	print LOG $msg;
	truncate(LOG, tell());
	flock(LOG, 8);
	close(LOG);

	if( $STDOUT_FLG == 1 )
	{
		print $msg;
	}
}

使用例

	logger("ファイル出力のみ");
	logger("標準出力・ファイル出力の両方" ,1);