Ubuntu Apache2基本認証の問題

Ubuntu Apache2基本認証の問題

特に、基本認証に関して構築されている内部ネットワークユーティリティサーバーに問題があります。

これで、次の構成で機能します。

root@P-UIDMON-02:/# /usr/local/scripts/LinuxVersion.sh

### Linux Standard Base Information
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 23.04
Release:        23.04
Codename:       lunar
### Kernel Release
6.2.0-1015-azure
### Version of Apache2
Server version: Apache/2.4.55 (Ubuntu)
Server built:   2023-10-26T13:37:01

root@P-UIDMON-02:/# /usr/local/scripts/ApacheConfig.sh
### /etc/apache2/apache2.conf Config File
ServerName p-uidmon-02.acas.example.org
DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>
<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
        Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
### p-uidmon-02.conf Site Specific Config File
<Directory /var/www>
    SSLRequireSSL
</Directory>
<Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
</Directory>
<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    Redirect "/" "https://p-uidmon-02.acas.example.org/"
    ServerName acas.example.org
    ServerAlias p-uidmon-02.acas.example.org
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options -Indexes +FollowSymLinks
        DirectoryIndex index.html
        AllowOverride All
        SSLRequireSSL
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/auth/.htpasswd
        Require valid-user
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
    <FilesMatch "\.(?:cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    ServerName acas.example.org
    ServerAlias p-uidmon-02.acas.example.org
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
        SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>
### /var/www/html/.htaccess File
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/auth/.htpasswd
Require valid-user

私の問題(理解できない)は、ファイルを.htaccess特定のディレクトリに配置せずに仮想ホストで基本認証の詳細を使用できるようにしたいのですが、これを機能させる唯一の方法は.htaccessディレクトリ内のファイルです。仮想ホスト宣言を無視するのと同じです<Directory>XYZ</Directory>。ファイルを削除しても.htaccess問題は発生しません。ファイルが存在する場合、問題が発生します。

それが働いている間、それを取るとなぜそれがうまくいかないのか理解しようとすることは私を狂わせます.htaccess

私がここで何が間違っているのか説明してもらえますか?

答え1

私が見るには3つの主な問題があるようです。

  1. htaccess管理ポート443の代わりに、仮想ホスト管理ポート80に構成ステートメントを配置しました。
  2. SSL ポート 443 ホストではなく、SSL ではなくポート 80 ホストに SSL 構成ステートメントを入れました。
  3. ポート 80 の仮想ホストはポート 443 の仮想ホストに即座にリダイレクトされるため、すべての構成ステートメントは (ほとんど) 無視されます。

関連情報