Apacheで.htaccessファイルを使用してウェブディレクトリにパスワード保護をかける方法
オンラインプロジェクトを管理する際には、外部の世界から保護するために、そのプロジェクトへのアクセスを制限する必要があることがよくあります。その理由はいくつかあり得ます。例えば、サイトがまだ開発段階にある間は、検索エンジンのクローラーがアクセスするのを防ぎたいと考えるかもしれません。
このチュートリアルでは、Apacheウェブサーバーで異なるウェブサイトのディレクトリをパスワードで保護する方法を示します。これを達成する方法はいくつかありますが、最も一般的に使用される2つの方法をレビューします。
最初の方法は、Apacheの設定ファイルに直接パスワード保護を設定しますが、2番目の方法は.htaccessファイルを使用します。
要件
ウェブディレクトリにパスワード保護を設定するには、以下が必要です:
- 稼働中のApacheウェブサーバー
- Apacheの設定ファイルではAllowOverride AuthConfigディレクティブを有効にする必要があります。
Apacheのパスワード保護ディレクトリを設定する
1. このチュートリアルでは、主要なウェブルートディレクトリ/var/www/htmlを保護します。そのディレクトリを保護するために、Apacheの設定を開きます:
---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf
---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf
2. /var/www/html のApacheドキュメントディレクトリのルートを見つけて、以下の提案された内容を追加してください:
Apache 2.2 バージョンについて
<Directory /var/www/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Apache 2.4 バージョンについて
<Directory /var/www/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
3. ファイルを保存し、次のコマンドを使ってApacheを再起動します:
--------------- On Systemd -------------------
systemctl restart httpd [On RedHat based systems]
systemctl restart apache2 [On Debian based systems]
--------------- On SysV init -----------------
service httpd restart [On RedHat based systems]
service apache2 restart [On Debian based systems]
4. さて、htpasswd コマンドを使用して、保護されたディレクトリのユーザー名とパスワードを生成します。このコマンドは、基本認証のためのユーザーファイルを管理するために使用されます。
コマンドの一般的な構文は次の通りです:
# htpasswd -c filename username
-cオプションは暗号化されたパスワードを保持するファイルを指定し、ユーザー名は認証のためのユーザーを指定します。
5. 私たちのパスワードファイルは、Apacheのウェブアクセス可能なディレクトリの外に配置する必要があります。そうすることで、ファイルがしっかりと保護されます。そのために、新しいディレクトリを作成します:
# mkdir /home/tecmint
6. その後、私たちはそのディレクトリに保存されるユーザー名とパスワードを生成します:
# htpasswd -c /home/tecmint/webpass tecmint
このコマンドを実行すると、新しいユーザー"tecmint"のためにパスワードを2回入力する必要があります:
その後、Apacheが「webpass」ファイルを読み取れるようにする必要があります。そのためには、次のコマンドを使ってそのファイルの所有権を変更する必要があります。
---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
7. この時点で新しいユーザー名とパスワードが準備できました。次に、Apacheにターゲットディレクトリにアクセスする際にパスワードを要求するように指示する必要があります。そのために、/var/www/htmlに.htaccessというファイルを作成します。
# vi /var/www/html/.htaccess
次のコードを追加してください:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint
8. さて、ファイルを保存して、設定をテストしてください。ブラウザを開き、ウェブブラウザにIPアドレスまたはドメイン名を入力してください。例えば:
http://ip-address
ユーザー名とパスワードを入力するように促されるべきです:
進むには、設定したユーザー名とパスワードを入力してください。
追加の注意事項
もし共有ホスティングを使用している場合、Apacheの設定ファイルにアクセスできない可能性が高いです。しかし、ほとんどのホスティング会社はデフォルトで「AllowOverride All」オプションを有効にしています。これは、ユーザー名とパスワードを生成し、保護したいディレクトリを選択するだけで済むことを意味します。これにより、作業が大幅に簡素化されます。
結論
このチュートリアルが役に立ち、あなたの目標達成に役立つことを願っています。質問やコメントがある場合は、下のセクションに遠慮なく投稿してください。




