mod_auth_basic
およびmod_auth_digest
を使用してApacheに基本的およびダイジェスト認証を実装するには、Apacheの仮想ホストまたはディレクトリ構成ファイルの構成が含まれます。基本認証から始めましょう。
基本認証:
mod_auth_basic
が有効になっていることを確認してください。これは通常、 LoadModule auth_basic_module modules/mod_auth_basic.so
のapache構成ファイル( httpd.conf
または関連する仮想ホスト構成ファイル)の行を開始することで行われます。パスワードファイルの作成:ユーザー名とその暗号化されたパスワードを含むパスワードファイルが必要です。 Apacheは、これにhtpasswd
ユーティリティを提供します。それを使用して、新しいファイル( .htpasswd
など)を作成し、ユーザーを追加します。
<code class="bash">sudo htpasswd -c /path/to/.htpasswd username</code>
( -c
フラグは新しいファイルを作成します。既存のファイルにユーザーを追加するためにそれを省略します。)コマンドはパスワードを求めます。ユーザーごとにこれを繰り返します。重要なことに、このファイルを安全に保存します。その妥協点は認証を妥協します。
Apacheの構成: apache構成ファイルで、 <directory></directory>
または<location></location>
内部で、保護エリアを定義するブロックをブロックするには、次のディレクティブを追加します。
<code class="apache"><directory> AuthType Basic AuthName "Restricted Area" AuthUserFile /path/to/.htpasswd Require valid-user </directory></code>
/path/to/protected/directory
および/path/to/.htpasswd
を実際のパスに置き換えます。 AuthName
、ユーザーに表示されるレルム名を設定します。
認証を消化する:
ダイジェスト認証は、平易なテキストでパスワードの送信を避けるため、基本認証よりも安全です。プロセスは似ています:
mod_auth_digest
が有効になっていることを確認します( mod_auth_basic
と同様)。htpasswd
ユーティリティを使用しますが、Digest認証用の個別のパスワードファイルが必要になる場合があります。 Apacheの構成:構成は基本認証に似ていますが、 AuthType
が変更されています。
<code class="apache"><directory> AuthType Digest AuthName "Restricted Area" AuthUserFile /path/to/.htdigest Require valid-user </directory></code>
Digest Passwordファイルへのパスを使用して、 /path/to/.htdigest
を置き換えます。
基本認証:ユーザー名とパスワードをプレーンテキストで送信します(base64エンコードされていますが、簡単に解読されます)。これにより、接続がHTTPSで固定されていない場合、盗聴に対して脆弱になります。 HTTPSなしでは基本認証を使用しないでください。
消化認証:より安全。パスワードのハッシュを送信して、実際のパスワードが明らかになるのを防ぎます。基本認証よりもはるかに安全ですが、安全なコンテキスト(HTTPS)内で適切に実装されていない場合、リプレイ攻撃や中間攻撃などの特定の攻撃に対して依然として脆弱です。
Apacheは、 <directory></directory>
および<location></location>
ディレクティブを使用して、認証を細かく制御できます。
<directory></directory>
:ディレクトリ全体とそのサブディレクトリに認証を適用します。指定されたパスは絶対にする必要があります。<location></location>
:ファイルシステム上の場所に関係なく、特定のURLに認証を適用します。これは、特定のスクリプトまたはページを保護するのに役立ちます。例: /private
ディレクトリとそのサブ/public
のみを保護する。
<code class="apache"><directory> AuthType Basic AuthName "Private Area" AuthUserFile /path/to/.htpasswd Require valid-user </directory> <directory> # No authentication required here </directory></code>
構成変更を加えた後にApacheを再起動することを忘れないでください(debian/ubuntuでsudo systemctl restart apache2
)。
ユーザーの資格情報は、 htpasswd
ユーティリティを通じて管理されます。
htpasswd -m /path/to/.htpasswd newuser
を使用します( -m
オプションは、より安全なMD5ハッシュアルゴリズムを使用します)。htpasswd /path/to/.htpasswd existinguser
を使用します。これにより、新しいパスワードが求められます。htpasswd
ファイルからユーザーを削除するための直接コマンドはありません。最も安全なアプローチは、目的のユーザーを使用して新しいパスワードファイルを作成し、古いユーザーを交換することです。これを行う前に、すべてのApacheプロセスが停止されるようにする必要があります。HTTP認証を実装するときは、盗聴から保護するためにHTTPSを常に使用することを忘れないでください。 OAUTH 2.0やOpenID Connectなどのより堅牢な認証方法を検討して、生産環境でセキュリティを高めるために検討してください。
以上がmod_auth_basicおよびmod_auth_digestを使用してApacheにHTTP認証(Basic Auth、Digest Auth)を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。