Web サーバー(Apache HTTP Server)を構築する ー ベーシック認証 ー
環境
- Parallels Desktop 14 for Mac
- macOS Mojave
- Ubuntu Server 18.04.2 LTS
既に以下の設定が完了しているものとします。
- 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 ディレクトリにアクセスすることができます。