レンタルサーバー

エックスサーバーでBasic認証のアクセス制限をかける方法

多くのレンタルサーバーでは、.htaccessファイルを利用することが可能で、このファイルをうまく利用すると、ディレクトリ単位でいろんな設定をすることができます。

ここではエックスサーバーでのBasic認証のやり方に特化してを解説します。

ちなみに.htaccessファイルには、Basic認証だけでなく、リダイレクトやURLの正規化(たとえば、http://www.itspace.biz/にアクセスしても、https://itspace.biz/に統一するなど)など、いろんなことができるので、ウェブサイトを管理する人なら、ぜひ知っておいてほしい存在です。

Basic認証を設定すると、そのディレクトリ配下のファイルには、正しいユーザー名とパスワードを入力するようにダイアログが表示されます。

Chromeのログインダイアログ
Google Chromeの場合

 

Safariのログインダイアログ
Safariの場合

パスワードは暗号化されずに送信されるとありますが、これは、サイトがSSLに対応していないためにこのような表示がされています。

もし、サイトがhttpsではじまるSSLで保護されている場合には、以下のようなダイアログになります。

SSLで保護されたサイトの Basic認証ダイアログ

ユーザー名やパスワードが合致しないと、ページが表示されず、以下のような場面が表示されます。

401エラー

上記は、エックスサーバーで用意されている401エラーの画面ですが、このページはカスタマイズして、オリジナルのページにすることもできます。

その制御にも、やはり.htaccessを利用します。

大まかな手順

  1. .htaccessファイルの作成
  2. パスワードの暗号化
  3. ユーザー名とパスワードを記述する.htpasswdファイルの作成
  4. 1と3のファイルをサーバーにアップする

.htaccessファイルへの記述

WordPressがインストールされてる場合などは、すでに.htaccessファイルが存在している場合もあります。その場合は、既存のファイルに書き足すことになりますが、ない場合は、新たに作成することになります。

先ほどから、普通に.htaccessファイルと読んでいますが、このファイルの名前そのものが「.htaccess」になります。

拡張子は何もつかないことと、先頭が「.」ドットではじまる特殊なタイプのファイルです。

さて、.htaccessファイルには以下のように記述をします。ここでは、エックスサーバーを利用している前提で記述していますので、他のレンタルサーバーをご利用の場合は、ファイルの保存場所など若干異なるかと思います。

1行目の「サーバーID」のところは、エックスサーバーの契約時に設定したIDが入ります。

Basic認証の設定について解説しているサイトでは、.htaccessファイルと.htpasswdファイルを同じディレクトリに置いている例がありますが、エックスサーバーではエラーになってしまいます。

.htpasswdファイルは、エックスサーバー側であらかじめ用意されている「htpasswd」ディレクトリにアップロードしないとちゃんと動きません。

.htpasswdのディレクトリ

パスワードの暗号化

.htpasswdファイルに記述するユーザー名とパスワードは、そのまま書き込むのではなく、暗号化されたものを書くようにします。

暗号化するというと、なんだか面倒くさそうですが、最近は、簡単に.htpasswdファイルの記述を作成してくれるサイトがあるので、こちらを使うとめちゃくちゃ楽です。

私のおすすめはこちらのLUFTTOOLSです。

http://www.luft.co.jp/cgi/htpasswd.php

.htpasswdファイル作成ツール

ユーザー名とパスワードを入れて、生成ボタンをクリックすると、暗号化されたパスワードを含んだ.htpasswdファイルの記述が表示されるので、これをそのままコピーアンドペーストすればOKです。

.htpasswdファイルの作成

.htpasswdファイルもドットで始まる特殊なファイルで、ファイル名そのものが「.htpasswd」です。

記述は、先ほどツールを使って作成したのを貼り付けるだけなので、難しいことはありませんが、一応改行を入れて置いたほうが良いかと思います。

.htpasswdファイルの記述

.htaccessと.htpasswdファイルをアップロード

最後に.htaccessと.htpasswdの2つのファイルをサーバーにアップロードするだけです。

先ほども述べましたが、これらの2つのファイルは別々のディレクトリへアップしないとちゃんと動きません。(エックスサーバーの場合)

.htaccessファイルは、アクセス制限をかけたいディレクトリへアップするので、分かりやすいですが、.htpasswdファイルは指定された場所(/home/サーバーID/ドメイン名/htpasswd/)へアップロードします。

アップロードできたら、実際に制限をかけたページを表示してみて、確認してみましょう。

もし、下記のような表示が出たら、どこかの設定が間違っています。

500エラー

アップロードしたファイルのパーミッションを「644」に変更してみるか、.htpasswdファイルの保存場所が間違っているか、.htaccessファイルに記述した.htpasswdのパスが間違っている可能性が高いので、その辺をチェックしてみると良いでしょう。

もっと簡単にBasic認証を設定するには

ここまで、いろいろと説明してきて、今更という感じもしますが、じつはエックスサーバーには簡単にBasic認証を設定できる機能があるのです。

エックスサーバーのサーバーパネルから、「アクセス制限」をクリックします。

エックスサーバーのサーバーパネル

すると、Basic認証を設定するドメインを選ぶ画面になるので、該当するドメイン名の右側から「選択する」をクリックします。

Basic認証設定(エックスサーバー)

すると、そのドメイン内のディレクトリが一覧で表示されるので、設定したいディレクトリのアクセス制限を「ONにする」ボタンをクリックします。

Basic認証その2(エックスサーバー)

すると、ボタンが「OFFにする」に切り替わりますので、その横の「ユーザー設定」をクリックします。

Basic認証その2(エックスサーバー)

この画面で、ユーザー名(ユーザーID)とパスワードを入力します。

パスワードは、そのまま入力すれば、自動的に暗号化してくれます。

というわけで、エックスサーバーを利用している方は、.htaccessや.htpasswdファイルを用意したりしなくても、サーバーパネルから簡単にBasic認証が設定できるということを覚えておきましょう。

私は、このことに気づかずに、Basic認証の設定ではまってしまいました。