読者です 読者をやめる 読者になる 読者になる

mimikakimemo

自分用メモ。

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外からアクセスすると認証ダイアログが出てくる。ちゃんと正しいユーザー名/パスワードを入力しなければ、閲覧できないようになっている。