Carpe Diem

備忘録。https://github.com/jun06t

WebDAV(HTTPS)の設定

ようやく出来るようになりました。 分からなかったのは、新しい方式と古い方式がネット上で混在していたためです。 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」ですが、どうやら「以前使用されていた」もののようで。 このことで前設定した分が旧式ということに気づいたのです。 では続きまして。 ◆apacheSSLを有効にする 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-sslSSL接続を使用するサーバの設定を行う。 $ 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-sslWebDAV フォルダの設定を追加する。僕はSSLの方なのでdefault-sslにしてます。書く場所は最後の方でOKです。Webページでは/davというアドレスにします。 <ifmodule mod_dav_fs.c="">
Alias /dav "/var/www/webdav" WebDAVで使用するフォルダの位置
<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