WebDAVの導入
WebDAVをインストールして外部からHTTPプロトコルを使ってLinuxサーバー のユーザフォルダ・共有フォルダにアクセスできるようにします。
|
※ |
セキュリティ確保のため、アクセスにはSSL暗号化通信+BASIC認証を使用します。 |
|
※ |
SSL用のセキュリティ証明書は自分で作成しますので接続するたびに警告が出ますが、この証明書をパソコンにインストールすれば出なくなります。WebDAVは自分や身内が使う前提ですので、この警告は気にする必要はないでしょう。 |
|
※ |
セキュリティを重視した一般向けのWEBサイト(ショッピングサイト等)でSSL通信を使用する場合は、正規の認証機関(日本ベリサイン等)が発行するセキュリティ証明書を取得した方が良いと思います。(最低でも年額10万円近くかかりますが。。) |
|
※ |
WebDAV+SSL(自家製セキュリティ証明書) で構築したサーバーにWindowsXPからは全く問題なく接続できたのですが、Windows7からは通常の方法ではどうしても接続できませんでした。 そこで自分なりにいろいろ試した結果、何とか接続できましたので「Windows7から接続する場合の設定方法」を最下部に記述します。 |
mod_sslインストール(Webサーバー間の通信を暗号化するためにmod_sslをインストールします)
|
[root@vics1 ~]# yum -y install mod_ssl |
サーバー(セキュリティ)証明書・秘密鍵を作成
|
[root@vics1 ~]# cd /etc/pki/tls/certs/
サーバー証明書の有効期限を10年に変更 [root@vics1 ~]# sed -i 's/365/3650/g' Makefile
[root@vics1 ~]# make server.crt Enter pass phrase: ← サーバー秘密鍵のパスワード(任意)を入力(表示はされません) Verifying - Enter pass phrase: ← パスワード再入力(表示はされません)
Enter pass phrase for sever.key: ← 上のパスワードを入力
Cuntory Name (2 letter code) [GB]:JP ← 国名(JP)入力 State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名入力 Locality Name (eg, city) [Newbury]:Minato ← 市区町村名入力 Organization Name (eg, company) [My Company Ltd]:sample.com ← 組織名(サーバー名で可)入力 Organization Unit Name (eg, section) []: ← 何も入力せず[Enter] Common Name (eg, your name or your server's hostname) []:sample.com ← サーバー名入力 Email Address []:admin@sample.com ← 管理者メールアドレス入力
サーバー秘密鍵からパスワード削除 (これをしないとサーバー起動時にその都度パスワードの入力を求められます) [root@vics1 ~]# openssl rsa -in server.key -out server.key Enter pass phraze for server.key: ← 上のパスワード入力 writing RSA key |
SSLの設定
|
[root@vics1 ~]# vi /etc/httpd/conf.d/ssl.conf
「SSLCertificateFile」と「SSLCertificatekeyFile」の記述部分を探して以下の通り修正
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificatekeyFile /etc/pki/tls/certs/server.key
SSL設定の反映 [root@vics1 ~]# /etc/rc.d/init.d/httpd restart |
※以上でSSLの設定は完了です。ルーターでTCP:443番をサーバーに振るように設定してください。
ACLの有効化設定
共有ファイルをWebDAVのユーザ(Apache)で操作できるようにACLアクセス制御機能を設定します。
[root@vics1 ~]# vi /etc/fstab
/deb/VolGroup00/LogVol00 / ext3 defaults 1 1 ↓ /deb/VolGroup00/LogVol00 / ext3 defaults,acl 1 1 ← 「,acl」を追加
[root@vics1 ~]# mount -o remount / |
共有ディレクトリの作成
例:ユーザ名(vic)のホームディレクトリ(/home/vic)
ユーザ名(jack)のホームディレクトリ(/home/jack)
全ユーザ用共有ディレクトリ(/home/public) とします。
各ユーザのホームディレクトリのパーミッションを変更[root@vics1 ~]# chmod 711 /home/vic[root@vics1 ~]# chmod 711 /home/jack 共有ディレクトリを作成し、所有者をnobodyに変更[root@vics1 ~]# mkdir /home/public/[root@vics1 ~]# chmod 777 /home/public/ [root@vics1 ~]# chown nobody. /home/public/
共有ディレクトリに各グループ権限での参照・更新・実行を許可 [root@vics1 ~]# setfacl -m g:apache:rwx,g:apache:rwx /home/public/ [root@vics1 ~]# setfacl -m g:vic:rwx,g:vic:rwx /home/public/ [root@vics1 ~]# setfacl -m g:jack:rwx,g:jack:rwx /home/public/
共有ディレクトリに新規に作成するファイルへの各グループ権限での参照・更新・実行を許可 [root@vics1 ~]# setfacl -m d:g:apache:rwx,g:apache:rwx /home/public/ [root@vics1 ~]# setfacl -m d:g:vic:rwx,g:vic:rwx /home/public/ [root@vics1 ~]# setfacl -m d:g:jack:rwx,g:jack:rwx /home/public/ |
WebDAVの文字化け対策
mod_encodingのインストール[root@vics1 ~]# yum -y install httpd-devel
[root@vics1 ~]# wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
[root@vics1 ~]# wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
[root@vics1 ~]# tar zxvf mod_encoding-20021209.tar.gz [root@vics1 ~]# /bin/mv mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c [root@vics1 ~]# cd mod_encoding-20021209/lib/ [root@vics1 lib]# ./configure && make && make install [root@vics1 lib]# cd ..
[root@vics1 mod_encoding-20021209]# wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch
[root@vics1 mod_encoding-20021209]# patch -p0 < mod_encoding.c-apache2.2-20060520.patch
[root@vics1 mod_encoding-20021209]# ./configure --with-apxs=/usr/sbin/apxs --with-iconv-hook
[root@vics1 mod_encoding-20021209]# vi Makefile LIBS = -liconv_hook ↓ LIBS = -L/usr/local/lib -liconv_hook
install-exec-local: $(APXS) -i mod_encoding.so ↓ $(APXS) -i -a -n encoding mod_encoding.la
[root@vics1 mod_encoding-20021209]# make && make install
[root@vics1 mod_encoding-20021209]# cd
[root@vics1 ~]# rm -fr mod_encoding-20021209 [root@vics1 ~]# rm -f mod_encoding-20021209.tar.gz
mod_encodingの設定(設定ファイル作成) [root@vics1 ~]# vi /etc/httpd/conf.d/mod_encoding.conf EncodingEngine on SetServerEncoding UTF-8 DefaultClientEncoding UTF-8 CP932 EUCJP-MS 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 "Mozilla/" EUCJP-MS |
WebDAVの設定
WebDAV設定ファイルの作成[root@vics1 ~]# vi /etc/httpd/conf.d/webdav.confAlias /webdav/public /home/public <Directory "/home/public"> DAV on SSLRequireSSL Options None AuthType Basic AuthName WebDAV AuthUserFile /etc/httpd/conf/.htpasswd アクセス元ホストを指定する場合は以下の4行を追加 Order deny,allow Deny from all Allow from 219.121.56.236 ← 外部(219.121.56.236)からのアクセスを許可 Allow from 192.168.1. ← LAN内からのアクセスを許可 </DIrectory>
[root@vics1 ~]# /etc/rc.d/init.d/httpd restart |
BASIC認証用ユーザ・パスワードの登録
1人目の登録(vic)[root@vics1 ~]# htpasswd -b -c /etc/httpd/conf/.htpasswd vic パスワード2人目以降(jack)[root@vics1 ~]# htpasswd -b /etc/httpd/conf/.htpasswd jack パスワード
.htaccessファイルの作成(各ユーザ専用フォルダ用)例:vic [root@vics1 ~]# vi /home/vic/.htaccess SSLRequireSSL AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName "Secret Page" AuthType Basic Require user vic
.htaccessファイルの作成(全ユーザ共用フォルダ(public)用) [root@vics1 ~]# vi /home/public/.htaccess SSLRequireSSL AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName "Secret Page" AuthType Basic Require valid-user |
以上でWebDAVの設定は完了です。
WebDAVによるユーザ専用フォルダ・共有フォルダへの接続
●WindowsXPの場合
1.vic専用フォルダへの接続
・「マイネットワーク」→「ネットワークプレイスの追加」で「ネットワークの追加ウィザード」を表示→「次へ」→「次へ」→
・「インターネットまたはネットワークのアドレス」欄に「https://192.168.1.100(サーバーのプライベートIPアドレス)/webdav/vic」と入力
※外部から接続する場合は「192.168.1.100」の部分をドメイン名「sample.com」にします。
・サーバー証明書の警告画面が出たら「はい」を押します。
※このときサーバー証明書をインストールすると以降警告は出なくなります。
・ユーザ名(vic)とvicのパスワードを入力して「OK」を押します。
・ネットワークプレイスの名前入力欄に適当な名前を入力して「次へ」→次画面でこのネットワークプレースは正しく作成されました。と表示されたら
「完了」を押します。
・ユーザ名のフォルダの中が表示されれば接続成功です。
・続いて以下のテストをします。
1) 予めSambaでユーザー 専用フォルダにコピーしておいたファイルを、WebDAVで接続して見られるか、別のファイルを追加できるか、削除できるか
2) 再度Sambaで接続して、1)でWebDAVでフォルダに追加したファイルを見たり削除できるか
以上が問題なくできれば完了です。
※ファイル操作がうまくいかない場合は、ユーザディレクトリのパーミッション等を再チェックしてみてください。
2.全ユーザ共用フォルダへの接続
・「マイネットワーク」→「ネットワークプレイスの追加」で「ネットワークの追加ウィザード」を表示→「次へ」→「次へ」→
・「インターネットまたはネットワークのアドレス」欄に「https://192.168.1.100(サーバーのプライベートIPアドレス)/webdav/public」と入力
※外部から接続する場合は「192.168.1.100」の部分をドメイン名「sample.com」にします。
・サーバー証明書の警告画面が出たら「はい」を押します。
※このときサーバー証明書をインストールすると以降警告は出なくなります。
・ユーザ名(vic)とvicのパスワードを入力して「OK」を押します。
・ネットワークプレイスの名前入力欄に適当な名前を入力して「次へ」→次画面でこのネットワークプレースは正しく作成されました。と表示されたら
「完了」を押します。
・publicフォルダの中が表示されれば接続成功です。
・続いて以下のテストをします。
1) 予めSambaで共用フォルダにコピーしておいたファイルを、WebDAVで接続して見られるか、別のファイルを追加できるか、削除できるか
2) 再度Sambaで接続して、1)でWebDAVでフォルダに追加したファイルを見たり削除できるか
以上が問題なくできれば完了です。
※ファイル操作がうまくいかない場合は、共有ディレクトリのパーミッション等を再チェックしてみてください。
●Windows7の場合
WebDAV+SSL(自家製セキュリティ証明書使用)にWindows7から接続するのはかなり苦労しましたが以下により接続できました。
1.自家製セキュリティ証明書のインストール
・ホームページのルートディレクトリ(/var/www/html/等)に適当なHTMLファイルを置き、ホームページが見られる状態にします。
・ インターネットエクスプローラのインターネットオプションを開き、セキュリティタブ内の「保護モードを有効にする」のチェックを外します。
※すべての設定が終わったら「保護モードを有効にする」にチェックを入れ直しておいた方が良いと思います。
・インターネットエクスプローラを再起動すると警告バーが出るので「以後表示しない」にして消します。
・「https://192.168.1.100(サーバーのプライベートIPアドレス)/」 に接続します。
※外部からの場合は「192.168.1.100」をホスト名(sample.com等)にします。
・セキュリティ証明書の警告画面が出ますので「このサイトの閲覧を続行する」を選択します。
・アドレスバー右の「証明書のエラー」から「証明書の表示」を選択します。
・「証明書のインストール」をクリックして「証明書のインポートウィザード」画面を出して「次へ」
・「証明書をすべて次のストアに配置する」を選択して「参照」から「証明書ストアの選択」画面で「物理ストアを表示する」にチェックを入れ、
「信頼されたルート証明機関」横の「+」をクリックして「レジストリ」を選択して「OK」→「次へ」→「完了」
・「この証明書をインストールしますか?」で「はい」→正しくインポートされました。で「OK」
・「証明書」画面で「OK」→「セキュリティの警告」画面で「はい」→ページが表示されたらブラウザを閉じて完了です。
2.ネットワークドライブの割り当て(ユーザ名:vicでvicの専用フォルダに接続する場合)
・「スタート」→「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」を右クリックして「管理者として実行」を選択して「はい」をクリックします。
・コマンドプロンプトで
C:\Windows\system32>net use z: https://192.168.1.100(サーバーのプライベートIPアドレス)/webdav/vic と入力します。
※「z:」は空いているドライブ名です。「/webdav/vic」はユーザー(vic)の専用フォルダのパスです。
※外部から接続する場合は「192.168.1.100」の部分を「ホスト名」に変更します。
'sample.com'のユーザ名を入力してください:vic ← ユーザ名(vic)を入力
'sample.com'のパスワードを入力してください:vicのパスワード ← vicのパスワードを入力
・正常に接続できると「コマンドは正常に終了しました。」と表示されますのでコマンドプロンプトを終了します。
※システムエラー 00 が発生しました。等が表示された場合は再度設定をやり直してみてください。
・成功したら続いて全ユーザ用の共有フォルダを空いているドライブ(y: x: 等)で設定します。
(ユーザ名・パスワードは ユーザー専用フォルダと同一のもの(ここではvic)を使用します)
3.ネットワークドライブの確認
・「コンピュータ」を開くと「ネットワークの場所」にユーザ名のフォルダができているはずです。
これをダブルクリックすればフォルダ内が表示されますので、WindowsXPのときと同様にファイル操作のテストをします。
※このフォルダが×になっていた場合は接続が失敗していますので、このフォルダ上で右クリックして「切断」を選択後、2.からやり直すか、
2.で先に全ユーザ用の共有フォルダを設定してみてください。その後でユーザ専用フォルダを設定すると接続できる場合もあります。