it-swarm-ja.com

apache2ダイジェスト認証

Ubuntuサーバー11.10のサイトファイルは次のとおりです。

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]

    DocumentRoot /var/www/mydir
    ServerAlias *.mydomain.no-ip.info
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/mydir>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${Apache_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${Apache_LOG_DIR}/ssl_access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual Host.
    SSLEngine on

    #   A self-signed (snakeoil) certificate can be created by installing
    #   the ssl-cert package. See
    #   /usr/share/doc/Apache2.2-common/README.Debian.gz for more info.
    #   If both key and certificate are stored in the same file, only the
    #   SSLCertificateFile directive is needed.
    SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 </VirtualHost>
 </IfModule>

今、私はディレクトリへの許可されたアクセスが欲しかった:

/var/www/mydir/private

次のようなダイジェストファイルを作成しました。

Sudo htdigest -c /etc/Apache2/digest_auth users enedene

そこで、<\ Virtualhost>の前に次を追加しました。

<Directory "/var/www/mydir/private/">
            AuthType Digest
            AuthName "Private"
            AuthDigestProvider file
            AuthUserFile /etc/Apache2/digest_auth
            Require enedene
</Directory>

Webサーバーを再起動し、リンクに移動すると:

https://mydomain.no-ip.info/private

ユーザー名とパスワードの入力を求められますが、問題は、作成したユーザー/パスワード以外ではなく、ユーザー名/パスワードの組み合わせが間違っているかのように継続的に拒否して再度プロンプトが表示されることです。
私の設定の何が問題になっていますか?

編集:
/var/log/Apache2/error.logの内容は次のとおりです。

[Wed Dec 07 18:00:47 2011] [error] [client 188.129.120.255] File does not exist: /var/www/mydir/favicon.ico
[Wed Dec 07 18:01:07 2011] [error] [client 188.129.120.255] Digest: user `enedene' in realm `Private' not found: /private

最初の行はサイトに接続するときですが、サイトは機能します。2行目は/ var/www/mydir/private dirにアクセスしようとするときです。ブラウザに認証が来ますが、アクセスできません。

編集2:
AuthNameを「users」に変更した後の新しいエラー:

[Wed Dec 07 18:07:59 2011] [error] [client 188.129.120.255] access to /private failed, reason: require directives present and no Authoritative handler.
6
enedene

レルムはユーザーであるため、AuthNameディレクティブは「users」にする必要があります

AuthNmae「Private」を試す代わりに、AuthName「users」でApacheを再起動します。

SudoサービスApache2リロード

5
Sabacon

AuthUserFileの後に、これを追加します。

AuthGroupFile /dev/null

これは、Apacheの再起動後に役立ちますか?そうでない場合、認証が失敗したときに$ {Apache_LOG_DIR} /error.logが何を言う必要がありますか?

0
user8290