[[Gentoo Linuxな生活/サーバ設定関連]] *もともとユーザ認証が無いページに認証を追加する [#h59d1d10] ログイン画面がないページだけど、ユーザ認証させたいようなときってありますよね。これを実現してみたいと思います。方法は2種類あります。 -htpasswdという平文認証を用いるパターン -htdigestというMD5暗号化認証を用いるパターン htpasswdだとネット上を平文でパスワードが流れるため、結構危険です。これはいやなので、MD5ダイジェスト認証を用いる方法で行ってみます。 *まずパスワードファイルを作る。 [#ra85374c] パスワードファイルを作ってみましょう。このパスワードは、基本的にapacheからアクセスできるコンテンツの中に入れるのはセキュリティ上好ましくないので、/etc/apache2に下においてみます。 # htdigest2 -c /etc/apache2/userpasswd "User Only" testuser Adding password for a in realm User Only. New password: パスワード Re-type new password: パスワード これでtestuserさんのパスワードがこのファイルに設定されました。で、このパスワードファイルの情報を使って認証させたいページを、先ほど登場したhttp://foo.bar.com/boardにしたいとします。 *apacheの設定を変更する [#y1e9cce5] ここで、/etc/apache2/conf/commonapache2.confを開きます。 <Directory /home/var/www/localhost/htdocs/board> Options -Indexes FollowSymLinks MultiViews AllowOverride All SSLRequireSSL ←SSLしかゆるしません(一つ前の設定が残ってるのね) AuthType Digest ←MD5ダイジェスト認証を要求 AuthName "User Only" ポップアップするパスワード入力窓に表示させるメッセージ AuthDigestFile /etc/apache2/userpasswd ←パスワードファイルの指定 require valid-user ←パスワードファイルに記述されている全てのユーザが参照できる <IfModule mod_access.c> Order deny,allow Allow from all </IfModule> </Directory> で、apacheを再起動します # /etc/init.d/apache2 restart この設定ですと、http://foo.bar.com/boardだと''Forbidden''ですね。https://foo.bar.com/boardだと、パスワード入力窓がポップアップします。ユーザ名、パスワードを入力してOKだと画面が参照できます。NGだと、アクセスがはじかれますよね?これで完成っす♪