ようやく出来るようになりました。
分からなかったのは、新しい方式と古い方式がネット上で混在していたためです。
WebDAVの設定とありますが、大半は
Apacheの設定がほとんど初期状態だったために手間がかかっています。
前回の
WebDAVの設定(サーバ側)はどうやら古いやり方のようで、新しいやり方はもっとシンプルのようです。
では以下設定の方法を。
まず
Apacheのファイルの中身を学びます。
◆/etc/apache2 ディレクトリ内のファイル
apache2.conf: メイン設定ファイル
conf.d: Apache2全体に適用される設定が記述されているファイルが格納されるディレクトリ
envvars: Apache2の
環境変数
httpd.conf:
以前使用されていた設定ファイルの名前。Apach2全体に適用される設定を記述する。
mods-available: このディレクトリにはモジュールとモジュールの設定ファイルが格納されている。すべてのモジュールが専用の設定ファイルを必要とするわけではない。
mods-enabled: このディレクトリに /etc/apache2/mods-available に格納されているモジュールへの
シンボリックリンクを置くと、そのモジュールがロードされるようになる。
ports.conf: Apache2が接続を受け入れるポートの設定
sites-available: このディレクトリにはApache2のバーチャルホストの設定ファイルを格納する。
sites-enabled: このディレクトリに /etc/apache2/sites-available に格納されているモジュールへの
シンボリックリンクを置くと、そのバーチャルホストが有効になる。
前の備忘録で頻繁にいじっていた「
httpd.conf」ですが、どうやら「
以前使用されていた」もののようで。
このことで前設定した分が旧式ということに気づいたのです。
では続きまして。
◆
apacheの
SSLを有効にする
SSLモジュールの有効化
$ sudo a2enmod ssl
/etc/apache2/sites-available/ に
default-ssl が生成される。
次のコマンドで default-
ssl を有効にすると、/etc/apache2/sites-enabled/ に
シンボリックリンクが張られます。
$ sudo a2ensite default-ssl
$ ls -l /etc/apache2/sites-enabled/
total 0
lrwxrwxrwx 1 root root 26 2010-10-29 10:47 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 30 2010-10-29 12:41 default-ssl -> ../sites-available/default-ssl
◆
SSL接続を使用するサーバの設定を行う。
$ sudo emacs -nw /etc/apache2/sites-available/default-ssl
: アクセスするポートを変更する場合は数字を変更
ServerAdmin: 管理者のメールアドレスに変更
DocumentRoot: Apache2 のドキュメントルートを任意のパスに変更
鍵のパスを実際のパスに変える。SSLの設定で設置した鍵を使用。
SSLCertificateFile /etc/ssl/CA/server.crt
SSLCertificateKeyFile /etc/ssl/CA/server.key
アクセスするポートを変更した場合は、/etc/apache2/ports.conf でポート番号を変更する。
$ sudo emacs -nw /etc/apache2/ports.conf
Listen 443: 番号を任意のポート番号に変更
設定に間違いがないかをチェック。
$ sudo apache2ctl configtest
するとこんな警告が出ました。
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
どうやら
$ hostname --fqdn
とした時に、グローバルからアクセス可能なホスト名が出てこないのが原因らしいです。
なので/etc/hosts を編集する必要があります。
$ sudo emacs -nw /etc/hosts
127.0.1.1 hostname
こんな行があるはずなので、
127.0.1.1 your.domain.com hostname
グローバルからアクセスできるホスト名を、127.0.1.1に対応する最初のホスト名として記述します。
apache再起動する。
$ sudo /etc/init.d/apache2 restart
とまぁこれで本来うまくいくはずなのですが、僕の場合相変わらず「apache2: Could not~」が出ます。
そこで「そういえば前作ったcrtでドメイン名適当にしちゃったなぁ」と思い出し、改めてDDNSに書き換えて作成。
しかしまた失敗orz
さらに調べてみるともっと簡単なやり方がありました。
/etc/hosts で、
127.0.0.1 localhost localhost.localdomain hirakuro hirakuro.localdomain
となっているのを
127.0.0.1 hirakuro.localdomain localhost localhost.localdomain hirakuro
と直すだけ。
ApacheでWebサーバの名前として使っているホスト名を最初に持ってくれば良いわけ。これでOK。普通に通りました。
◆SSL通信でのポートを開放
では次にルータの設定でポート開放を行います。
SSLの場合普通は443ポートになります。これはルータでの設定なのでマニュアルを参考にしてください。僕の場合はバッファローのマニュアルです。
ちゃんと開いてるか確認しましょう。ルータの不具合でたまに開いてないことがあります。僕はそれでずっと時間を費やしました。
ポートチェック【外部からポート開放確認】
開放したら
https://(DDNSで取得したホスト名)/
で「信頼できない」証明証が発行されたら成功です。
「信頼できない」と言いましたが、今回のような個人の自己証明局は基本クライアント(=ブラウザ)の信用は自動的には得られません。有償の認証局(VeriSignとか)なら自動的にされますが。
ちなみにVeriSignに証明されようとされまいと、SSL通信ではWebサーバの暗号化力に違いが出るわけではないです。有償の認証局を使う人は、保険をしている、と言うことです。SSL通信で何らかの不備があればVeriSignから補償がされます。そんな感じ。
◆WebDAVの設定
Apache2 の 各モジュールを有効にする。
モジュールの有効化
$ sudo a2enmod dav
$ sudo a2enmod dav_fs ←既に有効っぽい
$ sudo a2enmod encoding
Webdavで使用するディレクトリを作成。今回所有者は www-data:www-data にする。場所自体は自由です。ただし次のdefault か default-sslでの設定できちんと揃えましょう。まぁ/var/www/がApacheのデフォルトだからこのままでいいかと。今回は/
webdavというフォルダを作成してます。
$ sudo mkdir -p /var/www/webdav
$ sudo chown www-data:www-data /var/www/webdav
次に/etc/apache2/site-availableのdefault か default-sslに WebDAV フォルダの設定を追加する。僕はSSLの方なのでdefault-sslにしてます。書く場所は最後の方でOKです。Webページでは/davというアドレスにします。
<ifmodule mod_dav_fs.c=""> <Location /dav>
DAV on
SSLRequireSSL <-- SSLのみ通す
Options Indexes
Order deny,allow
AuthType Basic
AuthName "Webdav"
AuthUserFile /etc/apache2/dav.passwd <-- パスワードファイルの位置
#Require user user1,user2 <-- 特定のユーザの場合
Require valid-user <-- 全ユーザの場合
</Location>
</IfModule>
認証用のパスワードファイル「dav.passwd」を作成します。ユーザー名を「server」とします。
$ cd /etc/apache2/
$ sudo htpasswd -c ./dav.passwd server ← 最初の一人のときだけ
New password:yyyy
Re-type new password:yyyy
Adding password for user server
-c オプションは新しくファイルを作成してしまうので、2人目以降は
$ sudo htpasswd ./dav.passwd server
で追加します。
最後にパスワードファイルのオーナー&パーミッションを変更。WebDAVフォルダのオーナーと合わせる?
$ sudo chown www-data:www-data ./dav.passwd
$ sudo chmod 600 ./dav.passwd
Apache2 を再起動すれば利用できるようになります。
$ sudo /etc/init.d/apache2 restart
アクセスするときは
https://(DDNSで取得したホスト名)/dav
そうすると先ほど設定したユーザー名とパスワードを聞かれるので入力すればWebDAVのフォルダにアクセスできます。
作成したWebDAVフォルダは/var/内なのでGUIでのファイル移動は権限の権限の問題で出来ません。なのでアクセスできるところに元ファイルを置き、WebDAVのフォルダにはリンクを入れるといいです。
次回はWebDAVのクライアント(ブラウザでない)について書きたいと思います。
ソース:
Apache2 でWebサーバ
Apacheのwarning回避
Samba + WebDav + SSL その1