kukai88

垢 - やったことを残す -

Web サーバー(Apache HTTP Server)を構築する ー ベーシック認証 ー

環境


既に以下の設定が完了しているものとします。

  • Apache HTTP Server の導入
  • ファイヤフォールの設定(80 番ポートの開放)

1. ベーシック認証を設定するディレクトリを作成する

http://xxx.xxx.xxx.xxx/private/」でアクセスできるリソースに対してベーシック認証を設定する為、/var/www/html 直下に「private」ディレクトリを作成します。

$ sudo mkdir /var/www/html/private

private ディレクトリ内を自由に扱えるようにする為、所有ユーザーを root からログインユーザーに変更しておきます。

$ sudo chown {ログインユーザー名} /var/www/html/private

2. Apache の設定ファイルを調整する

private ディレクトリでベーシック認証を有効にする為、/etc/apache2/conf-enabled/security.conf に下の設定を追加します。

<Directory /var/www/html/private>
   AllowOverride all
   Require all denied
</Directory>

追加完了後、変更を反映させる為に Apache を再起動します。

$ sudo systemctl restart apache2

3. .htaccess ファイルを作成する

.htaccess ファイルはベーシック認証を有効にしたいディレクトリに配置します。内容は以下のような感じです。

# ユーザー名とパスワードを登録しているファイルの絶対パス
AuthUserfile /var/www/.htpasswd
# 認証ダイアログに表示する文言
AuthName "Please input user ID and password."
# 認証の種類
AuthType Basic
# 登録しているユーザーと認証が一致することが必須
Require valid-user

4. ユーザーとパスワードを登録する

外部からアクセスされない /var/www 直下に .htpasswd ファイルを htpasswd コマンドを用いて作成します。
"-b" はパスワードを対話的に入力せずに、コマンドの引数として渡すためのオプションです。"-c" は新規に .htpasswd ファイルを生成するためのオプションです。

$ sudo htpasswd -b -c /var/www/.htpasswd {ユーザー名} {パスワード}

5. private ディレクトリにアクセスする

同じネットワーク内の PC のブラウザから「http://xxx.xxx.xxx.xxx/private」にアクセスします。
認証ダイアログが表示され、事前に登録したユーザー名とパスワードを入力し、問題なければ private ディレクトリにアクセスすることができます。