7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【EC2 + Nginx】 第3回 Basic認証設定

Last updated at Posted at 2023-12-30

はじめに

本記事ではWebサイトへのBasic認証設定を解説します。
Basic認証は事前に設定したIDとパスワードを入力することで認証する方法です。
取り急ぎとして設定する場面は多くありますが、あくまでも簡易的な機能であるため、勉強や検証環境以外の環境で使用する場合、別途セキュリティ対策はしっかり行いましょう。
少しでも皆さんの参考になれば幸いです。

前回、サブドメイン登録&SSL化設定手順についてまとめました。
本記事単体でも参考になるかと思いますが、【EC2 + Nginx】第2回 サブドメイン登録&SSL化設定も合わせてご覧ください。

こんな人に読んでほしい

  • Webサイトやアプリケーションを閲覧する環境を作りたい
  • EC2 + Nginxを使った環境を作りたい
  • Basic認証を設定したい
  • Nginxについて理解を深めたい

前提条件

  • EC2インスタンス作成済みであること
  • Nginxインストール済みであること
  • SSH接続できること

解説内容

実施手順

  • パッケージインストール
    • SSH接続
    • Linuxディストリビューションの確認
    • パッケージインストール
  • 認証ファイルの設定
    • .htpasswdファイルの作成
    • 生成ファイルの確認
    • Nginx設定ファイルへの登録
  • 動作確認
    • 設定反映確認
    • 再設定時・設定解除時の確認

パッケージインストール

.htpasswdファイルの利用に必要なパッケージをインストールしていきます。
.htpasswdファイルは、Apache Webサーバーにおいて、ユーザー名とパスワードを保管するためのファイルです。

SSH接続

まずはEC2へSSH接続していきます。
以下コマンドで接続しましょう。

ssh -i <キーペア名>.pem ec2-user@<パブリックIP>

Linuxディストリビューションの確認

環境によりインストールコマンドが異なるため、EC2環境のLinuxディストリビューションを確認します。
以下コマンドで確認しましょう。

cat /etc/os-release

例として以下のような結果が出力されます。
ID_LIKEに記載の内容を確認するとfedoraと記載があるため、RedHat系ディストリビューションであることがわかりました。

ngin.png

パッケージインストール

ここでは以下2パターンのインストールコマンドを記載します。
環境に応じてインストールコマンドが何かは調べてみてください。

RedHat系

sudo yum install httpd-tools

Debian系

sudo apt-get install apache2-utils

Complete!が表示されればインストール成功です。

認証ファイルの設定

.htpasswdファイルの作成

それでは.htpasswdファイルを作成していきましょう。
今回は以下のように設定していきます。

  • ユーザ名:TestUser
  • パスワード:TestPass

次のコマンドを実行してください。

sudo htpasswd -c /etc/nginx/.htpasswd <ユーザ名>

パスワードが聞かれるので、二度入力してください。

New password: <パスワード入力>
Re-type new password: <確認用に再度パスワード入力>
Adding password for user <ユーザ名>

生成ファイルの確認

それでは生成された.htpasswdファイルを確認しましょう。
以下コマンドを実行して確認してください。

cat /etc/nginx/.htpasswd

ユーザ名とハッシュ化されたパスワードが記録されています。
pass.png

Nginx設定ファイルへの登録

最後に作成した.htpasswdファイルをnginx.confに登録していきます。
次のコマンドでnginx.confを開きます。

sudo vi /etc/nginx/nginx.conf

そして以下の設定を追加し、上書きしてください。
設定内容はそれぞれ以下の通りです。

  • location:Basic認証をかけたいエンドポイントURL
  • auth_basic:認証名(任意の名称)
  • auth_basic_user_file:.htpasswdファイルのフルパス
location / {
    auth_basic "Basic Authentication";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Nginxの再起動を忘れないようにしましょう。

sudo systemctl restart nginx

動作確認

設定反映確認

それでは設定が反映されているか確認します。
Webページhttps://<ドメイン>へアクセスすると、ユーザ名とパスワードが求められます。
設定した内容を正しく入力すると、ページが閲覧できます。
basic.png
これでBasic認証設定が完了しました。

再設定時・設定解除時の確認

一度Basic認証を突破するとページ更新しても再度ユーザ名とパスワードは求められません。
確認したい場合はURLホスト名の前にa@をつけてページ更新してください。

https://<任意の文字列>@<ドメイン名>

まとめ

今回で3部すべて完結しました。
比較的簡単に構築できたのではないでしょうか。
Webサイトホスティングの環境やセキュリティ対策は、他にも様々な方法がありますので
皆さんの環境に合ったやり方を探してみてください。

ここまで読んでくださりありがとうございました!

ぜひこちらも併せてお読みください。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?