UbuntuでApacheのBasic認証をやってみる
Basic認証はパスワードが暗号化されないので、インターネットで公開するようなサイトでは適していない。自宅や会社のLAN上で簡易的にユーザー認証が必要なサイトを作るにはいいんじゃないか、と思う。UbuntuでApacheのBasic認証の設定方法をメモしておく。
1.認証が必要になるディレクトリを作成する
$ sudo mkdir -p /var/www/himitu
2.認証に使うユーザーとパスワードを作る
- ユーザー名: foo
- パスワード: passwd
- パスワードファイルのフルパス: /etc/apache2/.htpasswd
$ sudo htpasswd -c /etc/apache2/.htpasswd foo New password: Re-type new password: Adding password for user foo
最初にパスワードファイルを作るときは -c オプションを指定する。
3.Apacheの設定ファイルに追加する
http://localhost/himitu を閲覧したとき、認証されるように設定ファイルに下記を追加する。
<Directory "/var/www/himitu"> AuthType Basic AuthName "HIMITU Zone" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory>
- AuthName: 領域名を定義する。領域名が同じならば、画面が変わっても認証されたことになり認証画面は表示されない。
- AuthUserFile: パスワードファイルの場所をフルパスで指定する
- Require valid-user: 認証されたユーザのみ閲覧可能とする
Ubuntuの場合、インストール直後は、設定ファイルは/etc/apache2/sites-available/defaultなのでコピーしてから修正していくと便利。ここでは mysite1 にコピーする。
$ cd /etc/apache2/sites-available $ sudo cp default mysite1 $ sudo vi /etc/apache2/sites-available/mysite1 <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> <Directory "/var/www/himitu"> AuthType Basic AuthName "HIMITU Zone" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
設定ファイル /etc/apache2/sites-available/default を無効にする
$ sudo a2dissite default
新しい設定ファイル /etc/apache2/sites-available/mysite1 を有効にする
$ sudo a2ensite mysite1
Apacheに設定ファイルを読み込ませ、再起動する
$ sudo /etc/init.d/apache2 reload
4.ブラウザで動作確認
Firefoxで http://localhost/himitu をアクセスすると、認証画面が開く。
参考にしたサイトなど
【送料無料】Apacheセキュリティ |