ホームページ > 運用・保守 > Apache > mod_auth_basicおよびmod_auth_digestを使用してApacheにHTTP認証(Basic Auth、Digest Auth)を実装するにはどうすればよいですか?

mod_auth_basicおよびmod_auth_digestを使用してApacheにHTTP認証(Basic Auth、Digest Auth)を実装するにはどうすればよいですか?

Robert Michael Kim
リリース: 2025-03-12 18:43:06
オリジナル
323 人が閲覧しました

mod_auth_basicおよびmod_auth_digestを使用してApacheでHTTP認証を実装します

mod_auth_basicおよびmod_auth_digestを使用してApacheに基本的およびダイジェスト認証を実装するには、Apacheの仮想ホストまたはディレクトリ構成ファイルの構成が含まれます。基本認証から始めましょう。

基本認証:

  1. モジュールを有効にする: mod_auth_basicが有効になっていることを確認してください。これは通常、 LoadModule auth_basic_module modules/mod_auth_basic.soのapache構成ファイル( httpd.confまたは関連する仮想ホスト構成ファイル)の行を開始することで行われます。
  2. パスワードファイルの作成:ユーザー名とその暗号化されたパスワードを含むパスワードファイルが必要です。 Apacheは、これにhtpasswdユーティリティを提供します。それを使用して、新しいファイル( .htpasswdなど)を作成し、ユーザーを追加します。

     <code class="bash">sudo htpasswd -c /path/to/.htpasswd username</code>
    ログイン後にコピー

    -cフラグは新しいファイルを作成します。既存のファイルにユーザーを追加するためにそれを省略します。)コマンドはパスワードを求めます。ユーザーごとにこれを繰り返します。重要なことに、このファイルを安全に保存します。その妥協点は認証を妥協します。

  3. 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 、ユーザーに表示されるレルム名を設定します。

認証を消化する:

ダイジェスト認証は、平易なテキストでパスワードの送信を避けるため、基本認証よりも安全です。プロセスは似ています:

  1. モジュールを有効にする: mod_auth_digestが有効になっていることを確認します( mod_auth_basicと同様)。
  2. パスワードファイルの作成:以前と同じhtpasswdユーティリティを使用しますが、Digest認証用の個別のパスワードファイルが必要になる場合があります。
  3. 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を構成する

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 )。

HTTP認証のユーザー資格情報の管理と更新

ユーザーの資格情報は、 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート