epgrec に Digest 認証をかける
今まではLAN内からしか epgrec にアクセスしていなかったが、外からアクセスできるようにしたかったので、その準備としてまず Digest 認証をかけてみる。下記のページを参考に設定。
環境はいつもどおり Ubuntu 12.04。
パスワードファイル .htdigest の作成
$ sudo htdigest -c ファイル名 'realm名' ユーザー名
でパスワードファイルを作成する。
$ cd /etc/apache2/ $ sudo htdigest -c .htdigest 'epgrec' epgrec_user Adding password for epgrec_user in realm epgrec. New password: [パスワードを入力] Re-type new password: [確認のためにもう一度入力]
とすれば、ユーザー epgrec_user、領域(realm) epgrec のパスワードが設定できる。作成されるファイル名は .htdigest。
Apache2 の設定ファイルの編集
設定ファイル /etc/apache2/sites-available/default をコピーして編集し、/etc/apache2/sites-available/mysite として保存する。最初は単純に以下のようにしていた。
@@ -12,6 +12,19 @@ Order allow,deny allow from all </Directory> + <Directory "/var/www/epgrec"> + AuthType Digest + AuthName "epgrec" + AuthDigestDomain /epgrec/ + AuthUserFile /etc/apache2/.htdigest + Require valid-user + </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin">
これだとどこからアクセスしても、ユーザー名とパスワードを入力する必要がある。ブラウザではユーザー名とパスワードを記憶してくれるのでさほど問題にはならないが、録画済一覧画面から視聴しようとすると、VLC側でもう一度ユーザー名とパスワードを入力しなければならない。VLCではこれを記憶してくれないので、煩わしく感じた。
そこで、(視聴についてはLAN内からのアクセスをメインに想定しているので、)LAN外からのアクセスはこのまま Digest 認証にしておき、LAN内からのアクセスを認証なしにすることにした。
上のページなどを参考に設定したところ、以下のようになった。
--- default 2012-02-07 13:17:00.000000000 +0900 +++ mysite 2012-12-30 08:35:07.156429901 +0900 @@ -12,6 +12,19 @@ Order allow,deny allow from all </Directory> + <Directory "/var/www/epgrec"> + AuthType Digest + AuthName "epgrec" + AuthDigestDomain /epgrec/ + AuthUserFile /etc/apache2/.htdigest + Require valid-user + + Order deny,allow + Deny from all + Allow from 192.168.11.0/24 127.0.0.1 + + Satisfy Any + </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin">
設定の反映
/etc/apache2/sites-available/default を無効、mysite を有効にする。
$ sudo a2dissite default $ sudo a2ensite mysite
auth_digest モジュールを有効にする。
$ sudo a2enmod auth_digest
Apache2 を再起動する。
$ sudo service apache2 restart
ブラウザから確認
LAN内からはこれまでどおり普通にアクセスできるが、ブラウザでLAN外からアクセスすると認証ダイアログが出てくる。ちゃんと正しいユーザー名/パスワードを入力しなければ、閲覧できないようになっている。