レンタルサーバでディレクトリ毎に認証を行うようにしてみる
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
さくらのレンタルサーバでは相変わらずDigest認証ができないらしい。ついでにロリポップ!、ネットオウル(ミニバード、ファイアバード、クローバー)についても確認してみた。 で紹介したように、さくらインターネットでは、サポートしていませんが、
最近のレンタルサーバーでは、ほぼ、どこでもサポートしているようです。
あくまで、自己責任にて利用することになりますが、先の記事で紹介している以外でも、エックスサーバーなどサポートしているところが多いようです。
(契約される場合は、必ず、確認しましょう)
そこで、今回は、Apacheでの認証(Basic,Digest)を行うための設定方法を簡単に解説してみます。
Basic認証 (Basic Authentication)とDigest認証 (Digest Authentication)の違いは、
いずれもHTTPで定義される認証方式の一つですが、大きく異なるのは、ブラウザからユーザ、パスワードを送信する仕組みにあります。
Basic認証では、単純にユーザ名とパスワード情報を、Base64でエンコードして送信します。そのため、盗聴や改竄の危険性が指摘されていました。
Digest認証では、その問題を解消すべく、ユーザ名とパスワードをMD5でハッシュ化して送信します。
今までは、IE6以前のブラウザでDigest認証の対応ができておらず、Windows XPの利用者が多かったために、あまり、Digest認証が利用されずにきました。
また、SSLによる認証が普及したことも要因の一つでしょうね。
SSLは、一般のユーザに普通に利用できるようにするためには、どうしても証明書を有料で発行してもらうことになりますから、少なからず運用費用がかかります。
Digest認証では、簡単なディレクトリ認証で良い場合は、ユーザ、パスワードで済ませることができますから、やはり、便利ではありますよね。
レンタルサーバーでディレクトリ毎の認証設定を行う
レンタルサーバーのApacheを利用してウェブブラウザから特定のディレクトリへアクセスした際、ユーザ、パスワードを求めるような認証設定について、以降に解説します。
前準備
Apacheで各ディレクトリ毎に認証設定を行うには、以下の2つのファイルを設定したいディレクトリに設置します。
設定ファイル (.htaccess)
パスワードファイル (.htpasswd)
いずれもテキストファイルですが、パスワードファイルに関しては、パスワードをハッシュ化(暗号化)するためのツールが必要になります。
ここでは、まずは、前準備として、パスワードファイルを作成するためのApache提供のツール( htpasswd および htdigest )を使えるようにします。
レンタルサーバーが、SSHでログイン あるいは、phpスクリプトなどで、htpasswd および htdigest コマンドが使える環境であれば、次へ進んでください。
そうでない場合、つまり、htpasswd および htdigest コマンドが使える環境がない場合は、とりあえず、Windowsに限って以下のように行うと、
自PCでパスワードファイルを作成することができます。
ApacheのWindows用一式をダウンロードし、適当なディレクトリに解凍します。
Apacheのバイナリファイルは、
Apache Lounge( http://www.apachelounge.com/download/ ) からダウンロードできます。
どのファイルをダウンロードすれば良いのかわからない方は、VC10 Apache 2.4 をダウンロードしましょう。
ダウンロードした zipファイル を適当なディレクトリに解凍します。(ここでは、C:\ に解凍したものとして以降解説します)
MicroSoft VC10のランタイムライブラリをダウンロードし、インストールします。
VC10のランタイムライブラリは、
http://www.microsoft.com/ja-jp/download/details.aspx?id=5555 からダウンロードできます。
ダウンロードした実行ファイルを、エクスプローラなどから実行し、インストールします。
最後に、コマンドプロンプトから Apache提供のツールが使えるか確認します。
D:\Apache24\bin> htpasswd.exe --help
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password ( default) .
-d Force CRYPT encryption of the password ( 8 chars max, insecure) .
-p Do not encrypt the password ( plaintext) .
-s Force SHA encryption of the password ( insecure) .
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On other systems than Windows and NetWare the '-p' flag will probably not work.
The SHA algorithm does not use a salt and is less secure than the MD5 algorithm.
C:\Apache24\bin> htdigest.exe --help
Usage: htdigest [-c] passwordfile realm username
The -c flag creates a new file.
先にZIPを解凍したディレクトリには、.\Apache24\bin というディレクトリが作成されたはずです。
カレントディレクトリをそこに向けて、上記のようにコマンドを実行してみてください。
上記にように出力されればOKです。
Basic認証を設定してみる
設定ファイル (.htaccess) を作成する
設定ファイル (.htaccess)は、通常のテキストファイルなので、通常のテキストエディタで編集できます。
AuthUserFile "/home/hoge/public_html/ninsyo/.htpasswd"
AuthName "Member Site"
AuthType BASIC
Require valid-user
AuthUserFile : パスワードファイルのフルパスを指定します。
AuthName : 認証名になります。適当な名前を指定してください。この名前が、認証のダイアログに表示されます。
AuthType : 認証タイプです。ここでは、Basic を指定します。
Require : アクセス権限を指定します。ここでは、valid-userを指定し、全ての認証されたユーザに、ディレクトリへのアクセスを許可します。
AuthUserFileでパスを指定する場合、
ネットオウルやロリポップ!では、pwd などのパス確認コマンドが実行できない環境では、正確なパスがわかならいことがあります。
ネットオウル系では、以下のようになります。
/home/[サーバーID]/[ユーザID]/public_html/[ドメイン名]/[認証したいディレクトリ]/.htpasswd
("サーバーID" は、アカウント情報で確認することができます。)
ロリポップ!系では、以下のようになります。
/home/users/[ユーザID]/[ドメイン-アカウント]/web/[認証したいディレクトリ]/.htpasswd
正確には、サポートに確認するのが一番間違いが少ないです。
パスワードファイル (.htpasswd) を作成する
Basic認証のパスワードファイルは、htpasswd コマンドを使って作成します。
C:\Apache24\bin> htpasswd -c .htpasswd hoge
New password: ********
Re-type new password: ********
Adding password for user hoge
既に .htpasswd が存在する場合は、-c を指定しません。
既に ファイルが存在するのに、-c を指定した場合、中身が初期化されるので注意してください。
上記の場合、パスワードは、md5 を使ってハッシュ化(暗号化)されます。
より強固な sha1を使ってハッシュ化(暗号化)をしたい場合は、-s を指定します。
C:\Apache24\bin> htpasswd -cs .htpasswd hoge
...
最後に、作成したファイルを認証したいディレクトリにアップロードする
先に作成した 設定ファイル (.htaccess)、パスワードファイル (.htpasswd) を認証したいディレクトリにFTPツールなどを使ってアップロードします。
アップロードを終えたら、そのディレクトリへアクセスしてみてください。
以下(Chromeでの例)のようなユーザ、パスワードの画面が表示され、ユーザ、パスワードを入力し、OKボタンをクリックすれば、ページが見えればOKです。
Digetst認証を設定してみる
設定ファイル (.htaccess) を作成する
設定ファイル (.htaccess)は、通常のテキストファイルなので、通常のテキストエディタで編集できます。
AuthUserFile "/home/hoge/public_html/ninsyo/.htpasswd"
AuthName "Member Site"
AuthType Digest
Require valid-user
AuthUserFile : パスワードファイルのフルパスを指定します。
AuthName : 認証名になります。適当な名前を指定してください。この名前が、認証のダイアログに表示されます。
AuthType : 認証タイプです。ここでは、Digest を指定します。
Require : アクセス権限を指定します。ここでは、valid-userを指定し、全ての認証されたユーザに、ディレクトリへのアクセスを許可します。
パスワードファイル (.htpasswd) を作成する
Basic認証のパスワードファイルは、htdigest コマンドを使って作成します。
C:\Apache24\bin> htdigest -c .htpasswd hoge
New password: ********
Re-type new password: ********
既に .htpasswd が存在する場合は、-c を指定しません。
既に ファイルが存在するのに、-c を指定した場合、中身が初期化されるので注意してください。
上記の場合、パスワードは、md5 を使ってハッシュ化(暗号化)されます。
Digetstは、md5のみで、sha1によるハッシュ化(暗号化)は行えません。
最後に、作成したファイルを認証したいディレクトリにアップロードし、ブラウザからアクセスしてみる
先に作成した 設定ファイル (.htaccess)、パスワードファイル (.htpasswd) を認証したいディレクトリにFTPツールなどを使ってアップロードします。
アップロードを終えたら、そのディレクトリへアクセスしてみてください。
以下(Chromeでの例)のようなユーザ、パスワードの画面が表示され、ユーザ、パスワードを入力し、OKボタンをクリックすれば、ページが見えればOKです。
設定上では、
Basic認証 (Basic Authentication)と
Digest認証 (Digest Authentication)の違いは、ほとんどありませんね。
認証タイプの指定と パスワードファイルの作成 だけです。
この2つのポイントさえ間違いがなければ、Basic認証と同じように手軽に認証設定を行うことができます。
もちろん、さくらインターネットさんのようにサーバー自体が対応していない場合は、使えませんが、
そうでない場合は、本当に手軽に認証ができることがわかりますね。
Digest認証は、md5 を使っていますから、必ずしもセキュアとは言い難いですが、Basic認証を使うよりは、数段セキュアであることは間違いないでしょう。
ロリポップ!系の各サーバの詳しい情報は、http://lolipop.jp/ のホームページからどうぞ。
ネットオウル系の各サーバの詳しい情報は、https://www.star.ne.jp/ のホームページからどうぞ。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事
口コミ・評判
口コミ・評判を投稿 :