「Apache - ユーザ認証」の版間の差分
52行目: | 52行目: | ||
== Digest認証 == | == Digest認証 == | ||
ここでは、Digest認証を利用して、特定ディレクトリのWebページを開く際に、secretというユーザ名でアクセスできるようにする。<br> | ここでは、Digest認証を利用して、特定ディレクトリのWebページを開く際に、secretというユーザ名でアクセスできるようにする。<br> | ||
<br> | |||
Digest認証には、htdigestコマンドを用いる。<br> | |||
もし、htdigestがインストールされていない場合はインストールする。<br> | |||
# Debian系の場合 | |||
# htdigestがインストールされいているか確認 | |||
htgiest | |||
-bash: htgiest: command not found | |||
# htdigestのパッケージ名を確認 | |||
sudo apt-cache search htdigest | |||
apache2-utils - Apache HTTP Server (utility programs for web servers) | |||
# htdigestをインストール | |||
sudo apt-get install apache2-utils | |||
<br> | <br> | ||
まず、ユーザ認証によるアクセス制限をかけるディレクトリを作成する。<br> | まず、ユーザ認証によるアクセス制限をかけるディレクトリを作成する。<br> |
2020年2月20日 (木) 11:31時点における版
概要
Apacheのユーザ認証には、Basic認証とDigest認証がある。
Basic認証は一般的に行われている方法だが、パスワードが暗号化されないため、機密性の高いデータへの認証には適していない。
Digest認証はパスワードが暗号化されるが、これに対応しているのは比較的最近のWebブラウザに限られる。
※注意
ここで使用しているコマンド名やディレクトリはディストリビューションによって異なる。
Basic認証
ここでは、Basic認証を利用して、特定ディレクトリのWebページを開く際に、secretというユーザ名でアクセスできるようにする。
まず、ユーザ認証によるアクセス制限をかけるディレクトリを作成する。
ここでは、/var/www/html/basicとする。
sudo mkdir -p /var/www/html/basic
次に、htpasswdコマンドでsecretというユーザを作成し、パスワードを設定する。
パスワードの設定に必要なパスワードファイルは、ここでは/etc/httpdに.htpasswdファイルとして作成する。
※注意
パスワードファイルの作成場所は必ずしも/etc/httpdである必要はない。
ただし、外部からアクセスできる場所(Apacheのドキュメントルート内など)は避ける。
なお、初めて.htpasswdファイルを作成するときは-cオプションが必要となる。
# 入力 htpasswd -c /etc/httpd/.htpasswd secret # 出力 New password: Re-type new password: Adding password for user secret
そして、Apacheの設定ファイル(/etc/httpd/conf/httpd.conf)に以下の設定を追加する。
<Directory "/var/www/html/basic"> AuthType Basic AuthName "Secret Zone" AuthUserFile /etc/httpd/.htpasswd Require user secret </Directory>
以上で設定は完了である。
以下のコマンドを実行して、Apacheを再起動する。
sudo systemctl restart httpd
Webブラウザで、http://localhost/basic/ にアクセスして、ユーザ認証用のダイアログボックスが表示されるか確認する。
Digest認証
ここでは、Digest認証を利用して、特定ディレクトリのWebページを開く際に、secretというユーザ名でアクセスできるようにする。
Digest認証には、htdigestコマンドを用いる。
もし、htdigestがインストールされていない場合はインストールする。
# Debian系の場合 # htdigestがインストールされいているか確認 htgiest -bash: htgiest: command not found # htdigestのパッケージ名を確認 sudo apt-cache search htdigest apache2-utils - Apache HTTP Server (utility programs for web servers) # htdigestをインストール sudo apt-get install apache2-utils
まず、ユーザ認証によるアクセス制限をかけるディレクトリを作成する。
ここでは、/var/www/html/memberとする。
sudo mkdir -p /var/www/html/digest
次に、Apacheの設定ファイル(/etc/httpd/conf/httpd.conf)に以下の設定を追加する。
<Directory "/var/www/html/digest"> AuthType Digest AuthName "Secret Zone" AuthDigestDomain /member/ AuthDigestFile /etc/httpd/.htdigest Require user secret </Directory>
そして、htdigestコマンドでsecretというユーザを作成し、パスワードを設定する。
パスワードの設定に必要なパスワードファイルは、ここでは、/etc/httpdディレクトリに.htdigestとして作成する。
※注意
パスワードファイルの作成場所は必ずしも/etc/httpdである必要はない。
ただし、外部からアクセスできる場所(Apacheのドキュメントルート内など)は避ける。
htdigestコマンドの書式は以下の通りである。
レルムには、/etc/httpd/conf/httpd.confファイルのAuthNameに指定した文字列を入力する。
なお、初めて.htdigestファイルを作成するときは、-cオプションが必要となる。
htdigest [-c] パスワードファイル レルム ユーザ名
実行結果は以下のようになる。
# 入力 htdigest -c /etc/httpd/.htdigest 'Secret Zone' secret # 出力 Adding password for secret in realm Secret Zone. New password: Re-type new password:
以上で設定は完了である。
以下のコマンドを実行して、Apacheを再起動する。
sudo systemctl restart httpd
Webブラウザで、http://localhost/digest/ にアクセスして、ユーザ認証用のダイアログボックスが表示されるか確認する。