ฉันมีการติดตั้ง Shiboleth ที่ทำงานบน Jetty 9 ผ่าน Apache ฉันมีพร็อกซีย้อนกลับไปยังพอร์ต 8080 ของ Jetty ซึ่งให้บริการอินสแตนซ์ Shiboleth
เมื่อฉันขด http://localhost:8080/idp/shibboleth ในคอนโซล การตอบสนองของอินสแตนซ์จะถูกสร้างขึ้นอย่างถูกต้อง
อย่างไรก็ตาม เมื่อฉันทำเช่นเดียวกันบนเบราว์เซอร์ของฉัน https://idp.example.com/idp/shibboleth ฉันได้รับข้อผิดพลาด 404
นี่เป็นข้อบ่งชี้ว่า reverse proxy ทำงานไม่ถูกต้อง?
นี่คือ apache conf ของฉัน
SSLUseStapling บน
SSLStaplingResponderTimeout 5
ปิด SSLStaplingReturnResponderError
SSLStaplingCache shmcb:/var/run/ocsp(128000)
<โฮสต์เสมือน *:80>
ชื่อเซิร์ฟเวอร์ "idp.spectrum.com.cy"
เปลี่ยนเส้นทางถาวร "/" "https://idp.spectrum.com.cy/"
</เวอร์ชวลโฮสต์>
<IfModule mod_ssl.c>
<โฮสต์เสมือน _default_:443>
ชื่อเซิร์ฟเวอร์ idp.spectrum.com.cy:443
ผู้ดูแลเซิร์ฟเวอร์ [email protected]
#เดเบียน
รวม CustomLog /var/log/apache2/idp.spectrum.com.cy.log
บันทึกข้อผิดพลาด /var/log/apache2/idp.spectrum.com.cy.org-error.log
#เซนทอส
รวม #CustomLog /var/log/httpd/idp.example.org.log
#ErrorLog /var/log/httpd/idp.example.org-error.log
DocumentRoot /var/www/html/idp.spectrum.com.cy
SSLEngine เปิดอยู่
โปรโตคอล SSL ทั้งหมด -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !ต่ำ !MD5 !EXP !PSK !SRP !DSS !RC4"
SSLHonorCipherสั่งซื้อบน
# ไม่อนุญาตให้ฝังหน้าเข้าสู่ระบบ IdP ของคุณภายใน iframe และ
# เปิดใช้งาน HTTP Strict Transport Security ด้วยระยะเวลา 2 ปี
<ส่วนหัวของ IfModule_module>
ส่วนหัวตั้งค่า X-Frame-Options DENY
ส่วนหัวตั้งค่า Strict-Transport-Security "max-age=63072000 ; includeSubDomains ; preload"
</หากโมดูล>
#เดเบียน
SSLCertificateFile /etc/ssl/certs/idp.spectrum.com.cy.crt
SSLCertificateKeyFile /etc/ssl/private/idp.spectrum.com.cy.key
# ACME-CA หรือ GEANT_OV_RSA_CA_4 (สำหรับผู้ใช้ที่ใช้ GARR TCS/Sectigo RSA Organization Validation Secure Server CA)
#SSLCACertificateFile /etc/ssl/certs/ACME-CA.pem
#SSLCACertificateFile /etc/ssl/certs/GEANT_OV_RSA_CA_4.pem
#เซนทอส
#SSLCertificateFile /etc/pki/tls/certs/idp.example.org.crt
#SSLCertificateKeyFile /etc/pki/tls/private/idp.example.org.key
# ACME-CA หรือ GEANT_OV_RSA_CA_4 (สำหรับผู้ใช้ที่ใช้ GARR TCS/Sectigo RSA Organization Validation Secure Server CA)
#SSLCACertificateFile /etc/pki/tls/certs/ACME-CA.pem
#SSLCACertificateFile /etc/pki/tls/certs/GEANT_OV_RSA_CA_4.pem
<IfModule mod_proxy.c>
ProxyPreserveHost เปิด
RequestHeader ตั้งค่า X-Forwarded-Proto "https"
ProxyPass /idp http://localhost:8080/idp/ ลองใหม่=5
ProxyPassReverse /idp http://localhost:8080/idp/ ลองใหม่=5
<สถานที่ /idp>
ต้องได้รับอนุญาตทั้งหมด
</สถานที่>
</หากโมดูล>
</เวอร์ชวลโฮสต์>
</หากโมดูล>
<โฮสต์เสมือน 127.0.0.1:80>
ProxyPass /idp http://localhost:8080/idp/ ลองใหม่=5
ProxyPassReverse /idp http://localhost:8080/idp/ ลองใหม่=5
<สถานที่ /idp>
ต้องได้รับอนุญาตทั้งหมด
</สถานที่>
</เวอร์ชวลโฮสต์>
ฉันทำให้ไฟล์ conf ง่ายขึ้นเพื่อลบ https การกำหนดค่าด้านล่างทำงานได้ดี แต่ใช้กับ http เท่านั้น ฉันจะตรวจสอบว่าเหตุใดการกำหนดค่า https จึงสร้างข้อผิดพลาด 404
<VirtualHost *:80>
ServerName idp.spectrum.com.cy
<IfModule mod_proxy.c>
ProxyPreserveHost On
ProxyPass /idp/ http://localhost:8080/idp/ retry=5
ProxyPassReverse /idp/ http://localhost:8080/idp/ retry=5
<Location /idp>
Require all granted
</Location>
</IfModule>
# virtualhost นี้อยู่ที่นี่เพื่อจัดการคำสั่งการดูแลระบบเท่านั้น
สำหรับ Shibboleth ดำเนินการจาก localhost
<โฮสต์เสมือน 127.0.0.1:80>
ProxyPass /idp http://localhost:8080/idp/ ลองใหม่=5
ProxyPassReverse /idp http://localhost:8080/idp/ ลองใหม่=5
<สถานที่ /idp>
ต้องได้รับอนุญาตทั้งหมด
</สถานที่>
</เวอร์ชวลโฮสต์>