特定のディレクトリに対するhtpasswdによる認証設定方法

Apacheで、特定のディレクトリ、例えば管理者用ログイン画面などを触られたくない場合や、特定のディレクトリを公開したくない場合にする設定のメモです。

# 新規
htpasswd -c /home/user/.htpasswd username
# 更新
htpasswd /home/user/.htpasswd username

プロンプトに対し、パスワードを入力すれば.htpasswdファイルが作られます。

次にApacheの設定。色々試しましたが、私にはLocationディレクティブが一番シンプルで設定しやすかったです。

<VirtualHost *:443>
    ServerName www.example.com:443
  ### 中略 ###
    <Location /somedir/>
        AuthUserFile /home/user/.htpasswd
        AuthGroupFile /dev/null
        AuthName "Input your ID and Password."
        AuthType Basic
        require valid-user
    </Location>
</VirtualHost>

なお、.htaccessでやる場合は次の通りです。Satisfy Anyにするため、他に条件をセットする場合は要注意です。

Satisfy Any

AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /home/user/.htpasswd
require valid-user

SetEnvIf Request_URI "^\/somedir\/.*" somedir
Order Allow,Deny
Allow from all
Deny from env=somedir

Basic認証は生のパスワードが流れるため、どうしてもhttpsで通信したいです。

また、これはあくまでも一時的な認証方法です。apacheの設定ファイルに直書きするため、Apacheの設定変更や、サーバ環境の移転の際などに情報が漏洩するリスクが高いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です