ApacheでBasic認証を設定する方法

Amazon EC2のMicroインスタンスに設置したApacheを使ってBasic認証を設定してみたので手順をメモしておく。
 

Basic認証とは

Webサイトの閲覧に使うプロトコル「HTTP」が備える、最も基本的なユーザ認証方式。アクセスの制限されたWebページにアクセスしようとすると、Webブラウザでユーザ名とパスワードの入力を求め、サーバでアクセスを許可しているユーザに一致すると、ページを閲覧することができる。
 

Basic認証を設置する方法

Basic認証を行う方法について,以下より,手順ごとに説明する。
 

.htpasswdを作成する

.htpasswdとは,Basic認証に使用される,ユーザ名とパスワードが記述されたファイルである。ファイルの書式は,ユーザ名:パスワードとなる。加えて,ファイルの記述ルールとして,パスワードは必ず符号化・暗号化することが求められる。パスワードの符号化・暗号化には,BASE64,MD5,cript()などを使用することが出来る。今回はLinuxのhtpasswdというプログラムを使って,.htpasswdファイルを作成する。
 
Linuxのhtpasswdプログラムで.htpasswdファイルを生成したい場合,以下の書式でコマンドを入力する。
 

htpasswd -c ファイル名 ユーザ名

 
書式に沿った具体例としては,以下のようになる。
 

htpasswd -c .htpasswd dog

 
上記のコマンドを入力後は,以下のようにシェルとの対話によってパスワードを設定することができる。
 
htpasswd
 
ちなみに,.htpasswdファイルの中身は以下のように記述されている。
 

dog:tB1Qybq7RtMNo

 
もっと簡単な.htpasswdの作成方法として,こちらのサイトで提供されている.htpasswdの作成ツールを用いる方法もあるが,セキュリティ上の観点で見ると推奨は出来ない。
 

.htaccessを作成する

.htaccessとは,Webサーバで使用できる、Webサーバの動作をディレクトリ単位で制御するためのファイルである。今回はBasic認証を行うために使用する。
以下,Basic認証を設置する際の.htaccessの記述例である。
 

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /var/www/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password";
AuthType Basic
require valid-user 
order deny,allow

 
<Files ~ "^\.(htaccess|htpasswd)$">deny from all</Files>では,正規表現を用いて,.htaccessと.htpasswdへのアクセスを制限している。これは,他人に.htaccessと.htpasswdが見られないようにするための処置である。
 
AuthUserFile /var/www/html/.htpasswdでは,認証に使用するための.htpasswdファイルの場所を指定している。
 
AuthGroupFile /dev/nullは,グループごとに認証を行う必要がある場合に指定する。今回はその必要は無いので,/dev/nullを指定している。/dev/nullとは,プロセスの不要な出力ストリームを捨てるのに使うか、入力ストリームのための空のファイルとして使うスペシャルファイルである。
 
AuthName "Please enter your ID and password"では,認証時に表示するメッセージを指定している。
 
AuthType Basicでは,認証方式を指定している。
 
require valid-userでは,アクセスを許可するユーザを指定する。全てのユーザを許可する場合は今回のようにvalid-userを指定する。
 
order deny,allowでは,アクセスの「許可」と「拒否」の順番を指定している。orderを使うことで拒否と許可の順番の指定を行うことができる。denyが拒否,allowが許可なので,今回の場合は「拒否してから許可」と指定している。
 

httpd.confを編集する

httpd.confには,.htaccessファイルを使用するように設定する必要がある。
httpd.confファイルのAllowOverrideを,以下のようにNone指定からAll指定に変更する。
 

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be &quot;All&quot;, &quot;None&quot;, or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    # AllowOverride None
    
    # NoneをAllに変更すると.htaccessの設定が有効になる。
    AllowOverride All

 

Apacheを再起動する

以下のコマンドを実行し,Apacheを再起動することでhttpd.confへの変更が反映される。
 

sudo service httpd restart

 
これでBasic認証を設定することができた。
 
 
以上
 
 
参考
.htaccessでベーシック認証 | バシャログ。
ベーシック認証を設定する(AuthType) – アクセス制限 – Apache入門
BASIC認証とは 〔 ベーシック認証 〕 〔 基本認証 〕 – 意味/解説/説明/定義 : IT用語辞典
.htaccessとは – 意味/解説/説明/定義 : IT用語辞典

Article written by

2 Responses

  1. Apache+SSL+ベーシック認証! | 渡りの日々

    […] 導入手順はここらへんとかここらへんんを参考に。 […]

  2. 匿名
    匿名 at | | Reply

    利用させてもらった際に間違いを見つけたので報告します
    AuthName “Please enter your ID and password”;
    上記の最後の”;”が2つ目の引数として認識されるため,Internal Server Errorとなります(Apache/2.4.10 Debianにて)
    ぱっと見,合っているように見えるのに動かないので焦りました

    このページのおかげで上手く設定できたのでありがとうございました

コメントを残す