会員専用のWebページを作成しようと思っている。Apache2では、認証方式としてBasic認証とDigest認証が準備している。
Basic認証
Basic認証には、auth_basicモジュールを使用する。Debianでは、auth_basicがデフォルトで使用できるようにmods-enable/ディレクトリに設定されている。
Basic認証では、会員用のIDおよびパスワードが平文で、インターネットを流れるのでセキュリティ上問題がある。暗号化通信のできるSSL(Security Sockets Layer)とBasic認証を組み合わせるとセキュリティは確保される。
Digest認証
Digest認証には、auth_digestモジュールを使用する。Debianでは、auth_digestは事前にインストールされているが、使用できるようにa2enmodコマンドでチューニングする必要がある。
Digest認証では、クライアントとサーバの両方がパスワードを共有するが、そのパスワードがネットワーク上に流れることはない仕組みになっている。MD-5 Digest認証は、下記の手順でおこなわれる。
1.クライアントが認証がWebページを要求する。
2.サーバは401コード「Authentication required」で応答する。この時、認証情報と共にランダムな文字列nonceも返す。
3.クライアントは、ユーザのパスワードとnonce値、メソッド、URLを使用してハッシュ文字列(resonce)を作成する。
4.クライアントはサーバから送られた認証に関する情報とともに、ユーザ名とresponseをサーバに送信する。
5.サーバは、サーバに保存しているユーザのパスワードのハッシュを使用して同じ操作をおこない、その結果がクライアントから送られてきたresponseと一致するか照合する。
6.一致すると要求されたWebページのコンテンツを返す。一致しない場合は、401コードを返す。
ネット上を流れるのは、毎回変わるハッシュ値responseで、パスワードは流れない。
この会員用サイトは、事前に登録されたクライアント専用に作成されたWebページで認証を必要としている。セキュリティと簡便性で、「Digest認証」を採用することとした。会員用サイトのURLを入力した時に、認証画面が表示されないようにHTTPのポート8080に変更した。
会員用サイトの仕様は下記の通りである。
URL | ドキュメント | IPアドレス | ポート | 管理者 |
www.localdomain/member/ | /home/etch/public_html/member | 192.168.1.48 | 8080 | etch |
1.Windowsのメモ帳でテスト表示用のページmember-index.htmlを作成する。
2./home/etch/public_html/ディレクトリ下に、member/ディレクトリを作成する。
WinSCPで/home/etch/ディレクトリに、member-index.htmlファイルを転送する。
このmember-index.htmlファイルを、member/ディレクトリ下にindex.html名で移動させる。
3./etc/apache2/mods-available/ディレクトリにauth_digest.loadファイルがあることを確認する。存在していたので、auth_digestモジュールが使用できるように設定する。a2enmodコマンドで、/etc/apache2/mods-enabled/にauth_digestモジュールのシンボリンクを張る。
4./etc/apache2/sites-available/ディレクトリに、会員用サイトを定義する02-memberファイルを作成する。
このサイトに接続するポートを8080とし、Digest認証でパスワード照合が一致した場合に、ページを見ることができるように設定する。
5.作成した/etc/apache2/sites-available/02-memberファイルを、/etc/apache2/sites-enabled/ディレクトリにシンボリンクを張る。
6./etc/apache2/sites-enabled/ディレクトリの内容確認
1.htdigestコマンドで、Digest認証のパスワードを登録する。今回パスワードを収納するファイルAuthUserFileを/home/etch/.htpasswdとした。.ht*ファイルはapach2.confで読み込みできないように設定しているので、パスワードを収納するファイル名として.htpasswdとした。またこのファイルの所有権をetchとするために、etch@debian:~$ htdigestで実行した。
オプションの-cは、.htpasswdが存在しないで生成する必要がある場合に付加する。
AuthNameのmember、Require userのwoodyを入力する。potatoのパスワード登録には、.htpasswdファイルがすでに生成されているので、オプション-c は不要である。
生成されたファイル.htpasswdとMD5に変換されたパスワードを確認する。
2.今までの設定を有効にする。
3.WebブラウザのURLに http://192.178.1.48:8080/member/ を入力し、www.localdomain/member/のインデックスページを表示させる。
4.認証画面が表示される。
5.会員IDとパスワードを入力し、Enterを押す。
6.www.localdomain/member/(192.168.1.48:8080/member/)のindex.htmlの表示
www.localdomain/member/は正常に表示された。ただ現時点では、ドメイン名での名前解決の設定ができていないので、IPアドレス指定(192.168.1.48:8080/member/)で表示させている。
次は、PHP5のインストールと設定を、PHP5の設定でおこなう。