ฉันกำลังตั้งค่าเซิร์ฟเวอร์ใหม่ — ฉันเพิ่งสร้างอินสแตนซ์ AWS EC2 ติดตั้ง apache และ mod_ssl ใหม่ และมีการกำหนดค่าที่ใกล้เคียงกับการกำหนดค่าที่ง่ายที่สุด Apache ดูเหมือนจะเพิกเฉยต่อการกำหนดค่าการรับรองความถูกต้องใด ๆ (รวมถึง ระดับล็อก
) ใน โฮสต์เสมือน
บล็อก
นี่คือ Apache 2.4.51 บน amzn2.x86_64 Linux
ฉันเริ่มต้นด้วยการเปลี่ยนเส้นทาง HTTP เป็น HTTPS จากนั้นทำตามคำแนะนำพื้นฐานสำหรับ Apache 2.4 การรับรองความถูกต้องและการอนุญาต. นั่นทำให้ฉันไปที่ virtual.conf ต่อไปนี้:
<VirtualHost _default_:80>
DocumentRoot /var/www/html
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
LogLevel debug
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory "/var/www/html">
AllowOverride All
Options Indexes FollowSymLinks
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/mount/local/apache/passwd/passwords"
Require user someuser
</Directory>
DocumentRoot /var/www/html
</VirtualHost>
โดยทั่วไปแล้วข้างต้นดูเหมือนว่าจะใช้งานได้ ยกเว้นสิ่งที่รับรองความถูกต้อง ถ้าฉันไปที่ที่อยู่ IP ของฉันในเว็บเบราว์เซอร์ มันจะเปลี่ยนเส้นทางไปที่ 443 อย่างถูกต้อง มันให้บริการใบรับรองจากเส้นทางที่ระบุ (ไม่เป็นมาตรฐาน) และฉันเห็นว่ามันกำลังเข้าสู่ระบบ แก้ไขข้อบกพร่อง
กิจกรรมระดับ อย่างน้อยสำหรับ mod_ssl อย่างไรก็ตาม มันเพียงแค่ให้บริการ index.html จาก /var/www/html/
(หมายเหตุ: /var/www/html
เป็นสัญลักษณ์)
ฉันพบ คำถามอื่นนี้ซึ่งทำให้ฉันต้องมองหาใดๆ ต้องได้รับอนุญาตทั้งหมด
คำสั่ง
# pwd
/etc/httpd/conf.d
# grep ต้องการ * 2>/dev/null
autoindex.conf:# โมดูลที่จำเป็น: mod_authz_core, mod_authz_host,
autoindex.conf: ต้องได้รับอนุญาตทั้งหมด
ssl.conf:# ด้วย SSLRequire คุณสามารถทำการควบคุมการเข้าถึงตามไดเร็กทอรี
ssl.conf:#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
ssl.conf:# o StrictRequire:
ssl.conf:# สิ่งนี้จะปฏิเสธการเข้าถึงเมื่อใช้ "SSLRequireSSL" หรือ "SSLRequire"
ssl.conf:#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
userdir.conf: ต้องการวิธีการ รับตัวเลือกการโพสต์
virtual.conf: ต้องการผู้ใช้ someuser
welcome.conf: จำเป็นต้องได้รับอนุญาตทั้งหมด
หนึ่งในนั้น autoindex.conf
อยู่ภายในก <Directory "/usr/share/httpd/icons">
บล็อกและหนึ่งใน ยินดีต้อนรับ.conf
อยู่ใน <Directory /usr/share/httpd/noindex>
. ฉัน ทำ ค้นหาหนึ่งใน /etc/httpd/conf/http.conf
:
# ผ่อนคลายเพิ่มเติมในการเข้าถึงรูทเอกสารเริ่มต้น:
<ไดเรกทอรี "/var/www/html">
ดัชนีตัวเลือก FollowSymLinks
AllowOverride ไม่มี
ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>
หมายเหตุ ในการติดตั้งนี้ (ผ่าน ยำ
บน Amazon Linux 2) ไฟล์กำหนดค่าหลักคือ /etc/httpd/conf/http.conf
. บรรทัดสุดท้ายของไฟล์นั้นคือ รวมตัวเลือก conf.d/*.conf
. การกำหนดค่าหลักของฉันที่ฉันโพสต์ไว้ข้างต้นอยู่ใน /etc/httpd/conf.d/virtual.conf
.
ฉันพยายามแสดงความคิดเห็นว่า ต้องได้รับอนุญาตทั้งหมด
และรีสตาร์ทเซิร์ฟเวอร์ แต่ไม่มีการเปลี่ยนแปลง นั่นคือตอนที่ฉันสังเกตเห็นว่าดูเหมือนว่าจะไม่ทำอะไรเลย คำถามที่กล่าวถึงก่อนหน้านี้แสดงบางรายการในไฟล์บันทึกของเขา อย่างไรก็ตามแม้
แม้ว่าฉันจะมี ดีบัก LogLevel
ฉันไม่เห็นอะไรที่เกี่ยวข้องกับ authz_core
ในไฟล์บันทึกเหมือนที่เขาเป็น ¯_(ã)_/¯
ณ จุดนี้ ฉันลองแก้ไขหลายอย่างภายใน <VirtualHost>
บล็อก:
- ฉันพยายามตัดเส้น
AuthType พื้นฐาน
ผ่าน ต้องการผู้ใช้ someuser
ใน <RequireAll>
บล็อก
- ฉันพยายามเพิ่ม
ต้องการปฏิเสธทั้งหมด
ก่อนที่ ต้องการผู้ใช้
- ฉันลองใช้ a
.htaccess
ไฟล์ที่มีการกำหนดค่าเดียวกัน
- ฉันลองเปลี่ยน
AllowOverride ทั้งหมด
ถึง AllowOverride All AuthConfig
และใช้ก .htaccess
ไฟล์
- ฉันพยายามขยายการบันทึกไปที่
ดีบัก LogLevel auth_basic:trace1 authz_core:trace1
ในทุกกรณี ไม่มีการเปลี่ยนแปลง และการกำหนดค่าแยกวิเคราะห์ได้ดี เซิร์ฟเวอร์เพียงแค่ให้บริการเพจเท่านั้น และไม่มีอะไรในไฟล์บันทึกใดๆ
อย่างไรก็ตามถ้าฉันทำการเปลี่ยนแปลงในหลัก conf/httpd.conf
ไฟล์ภายในของ <Directory "/var/www/html">
บล็อก สิ่งต่าง ๆ ทำงานตามที่คาดไว้:
- การเปลี่ยนแปลง
ต้องได้รับอนุญาตทั้งหมด
ถึง ต้องการปฏิเสธทั้งหมด
(แทนที่จะแสดงความคิดเห็น) ปิดกั้นการเข้าถึงทั้งหมด
- การเปลี่ยนแปลง
AllowOverride ไม่มี
ถึง AllowOverride AuthConfig
ทำให้ฉัน .htaccess
ไฟล์ที่มีการกำหนดค่าการรับรองความถูกต้องเช่นเดียวกับใน <VirtualHost>
บล็อกทำงานตามที่คาดไว้ - มันขอชื่อผู้ใช้และรหัสผ่าน
- เปิดการบันทึกด้วย
ดีบัก LogLevel auth_basic:trace1 authz_core:trace1
ทำให้ฉันมีการบันทึกจำนวนมาก
ดังนั้นเพื่อสรุปแม้ว่าของฉัน <VirtualHost>
config ใช้งานได้ทั่วไป (เปลี่ยนเส้นทาง, SSL, ดีบักสำหรับทุกสิ่งยกเว้นการรับรองความถูกต้อง) ดูเหมือนว่าจะเพิกเฉยต่อสิ่งใด ๆ รับรองความถูกต้อง
การกำหนดค่ารวมถึง ระดับล็อก
.
ในระยะสั้น ฉันได้แก้ปัญหาด้วยการเลิกทำการเปลี่ยนแปลงทั้งหมดที่ฉันทำในไฟล์กำหนดค่าหลัก ดังนั้นสิ่งต่างๆ จะไม่ถูกแทนที่ระหว่างการอัปเดตซอฟต์แวร์ และใส่ไว้ใน conf/00-override.conf
:
<Directory "/var/www/html">
AllowOverride All
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/mount/local/apache/passwd/passwords"
Require user someuser
</Directory>
อย่างไรก็ตาม จะเป็นการดีหากสามารถกำหนดค่าการให้สิทธิ์ในระดับโฮสต์เสมือนได้ ความคิดใด ๆ ?