#navi(../)
* Apacheでベーシック認証の設定を行う [#jfaedf4a]
本資料はCentOS6, Apache/2.2.15 (Unix)を使用してベーシック認証の設定を行った手順を記してあります。~
尚、CentOS6のhttpdはyumコマンドによりhttpdパッケージをインストールしました。

#contents
#htmlinsertpcsp(web-top.html,web-sp.html)

* 関連資料 [#zce006df]
iptablesなどにより外部から接続できない場合は、以下の資料が参考になるかもしれません。~
-[[CentOSでhttpdを動かしたのに外部PCから見れない場合の設定>http://linux.just4fun.biz/CentOS/httpd%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%9F%E3%81%AE%E3%81%AB%E5%A4%96%E9%83%A8PC%E3%81%8B%E3%82%89%E8%A6%8B%E3%82%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AE%E8%A8%AD%E5%AE%9A.html]]
-[[CentOSでApacheのインストールと自動起動>Apache/CentOSでApacheのインストールと自動起動]]
-[[Apacheでダイジェスト認証の設定>Apache/ダイジェスト認証の設定]]

**ベーシック認証を設定した環境 [#m53be2fd]
ベーシック認証の環境を構築したOSおよびApacheバージョンです。
 # cat /etc/redhat-release 
 CentOS release 6.3 (Final)
 # httpd -v
 Server version: Apache/2.2.15 (Unix)
 Server built:   Feb 13 2012 22:31:42

* ベーシック認証モジュールの有効化 [#td7f601d]
ベーシック認証を設定するために、mod_authモジュールが有効になっているか確認します。~
apache(httpd)の設定ファイルであるhttpd.confを確認します。~
(CentOSでは、/etc/httpd/conf/httpd.confにあります。)~
コメントアウトされていないので有効になっていることが確認できました。

 #
 # Dynamic Shared Object (DSO) Support
 #
 # To be able to use the functionality of a module which was built as a DSO you
 # have to place corresponding `LoadModule' lines at this location so the
 # directives contained in it are actually available _before_ they are used.
 # Statically compiled modules (those listed by `httpd -l') do not need
 # to be loaded here.
 #
 # Example:
 # LoadModule foo_module modules/mod_foo.so
 #
 LoadModule auth_basic_module modules/mod_auth_basic.so
 <snip>

* ベーシック認証用のパスワードファイルの作成 [#m4a9448d]
この資料では、ベーシック認証用のパスワードファイルは、/etc/httpd/.htpasswdに保存することにします。~
rootになり、以下のコマンドにより、ベーシック認証用のパスワードファイルを作成します。
 htpasswd -c /etc/httpd/.htpasswd ユーザ名
以下の実行例は、ユーザsakuraで作成しています。~
パスワードとする文字列を2度入力するとベーシック認証用の.htpasswdファイルが作成されます。
 # htpasswd -c /etc/httpd/.htpasswd sakura
 New password: 
 Re-type new password: 
 Adding password for user sakura

 # ls /etc/httpd/.htpasswd 
 /etc/httpd/.htpasswd
 # cat /etc/httpd/.htpasswd 
 sakura:P/90xXxXxXxXx
-&color(red){注意};
htpasswdに-cオプションを付けることによりファイルを新規に作成します。~
ファイルが既に存在する場合は、以前の内容が削除されます。~
したがって、他のユーザIDを追加したい場合は、-cオプションを付けずにhtpasswdコマンドを実行します。
htpasswd -c でsakuraユーザを作成し.htpasswdファイルを確認
 # ls /etc/httpd/.htpasswd
 ls: cannot access /etc/httpd/.htpasswd: そのようなファイルやディレクトリはありません
 [root@centos6 ~]# htpasswd -c /etc/httpd/.htpasswd sakura
 New password: 
 Re-type new password: 
 Adding password for user sakura
 [root@centos6 ~]# cat /etc/httpd/.htpasswd 
 sakura:NGabcdefghijh
htpasswd -c でtsubakiユーザを作成し.htpasswdファイルを確認
 # htpasswd -c /etc/httpd/.htpasswd tsubaki
 New password: 
 Re-type new password: 
 Adding password for user tsubaki
 # cat /etc/httpd/.htpasswd 
 tsubaki:Jz1234567890a
sakuraが削除されているのが確認できます。

作成したパスワードファイルのパーミッションを変更します。~
この資料では、.htpasswdファイルはapacheユーザのものに変更しapacheユーザのみが読み書きできるように変更しました。
 # chown apache:apache /etc/httpd/.htpasswd 
 # chmod 600 /etc/httpd/.htpasswd 
 # ls -l /etc/httpd/.htpasswd 
 -rw-------. 1 apache apache 43  9月 24 11:17 2012 /etc/httpd/.htpasswd
みなさんの環境に応じて適正なパーミッションを設定してください。

** ユーザの追加 [#l9a0bbcf]
ユーザ追加の場合は、htpasswdコマンドにオプションなしで実行すれば引数で指定したユーザを追することができます。
 # htpasswd /etc/httpd/.htpasswd tsubaki
 New password: 
 Re-type new password: 
 Adding password for user tsubaki
 # cat /etc/httpd/.htpasswd 
 sakura:NGabcdefghijh
 tsubaki:Jz1234567890a

** パスワードの更新 [#v4d098ee]
パスワードの更新の場合は、htpasswdコマンドにオプションなしで実行すれば引数で指定したユーザのパスワードを変更することができます。
 # htpasswd /etc/httpd/.htpasswd sakura
 New password: 
 Re-type new password: 
 Updating password for user sakura

* httpd.conf側の設定 [#m39f56f7]
今回使用した環境デフォルトのままであり、以下のように設定されています。
 DocumentRoot "/var/www/html"
    :
    :
    :
 <Directory "/var/www/html">
    :
    :
本資料では、<Directory "/var/www/html"> 中略 </Directory>にダイジェスト認証の設定を行います。~
変更した内容は以下の通りになります。
 <Directory "/var/www/html">
    AuthType Basic
    AuthName "AuthArea"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
     :
追加したのは、以下の4行です。
 AuthType Basic
 AuthName "AuthArea"
 AuthUserFile /etc/httpd/.htpasswd
 Require valid-user

AuthTypeにはBasic~
AuthNameには、AuthAreaという領域名を設定~
AuthUserFileには、htpasswdコマンドで指定したダイジェスト用パスワードファイルを設定~
Require valid-userを追記しました。~

* Apacheを再起動して設定を反映させる [#ua938d2c]
Apacheが既に起動している場合は、Apacheを再起動します。~
停止している場合は、Apacheを起動してください。~
今回は、CentOSを利用しているので以下のコマンドで起動、停止、再起動ができます。
- 起動
 service httpd start
- 停止
 service httpd stop
- 再起動
 service httpd stop

* ベーシック認証をためしてみる [#n8b3aff2]
ブラウザを起動してBasic認証を設定したホストに接続します。~
きちんと設定されていれば、以下のように認証画面が表示されます。~
AuthNameに指定した文字列が表示されているのが確認できます。~
認証にはユーザIDパスワードはhtpasswdコマンドで指定した値を使用します。
#ref(basic-01.gif)

#htmlinsertpcsp(web-btm.html,web-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS