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

제가 보기에는 세 가지 주요 문제가 있는 것 같습니다.

  1. htaccess관리 포트 443 대신 가상 호스트 관리 포트 80에 구성 명령문을 넣었습니다 .
  2. SSL 포트 443 호스트 대신 SSL이 아닌 포트 80 호스트에 SSL 구성 명령문을 넣었습니다.
  3. 포트 80의 가상 호스트는 포트 443의 가상 호스트로 즉시 리디렉션되므로 모든 구성 명령문은 (대부분) 무시됩니다.

관련 정보