ฉันใช้เซิร์ฟเวอร์ apache (2.4) ที่กำหนดค่าเป็น loadbalancer หน้าเซิร์ฟเวอร์ apache 2 ตัว มันทำงานได้ดีเมื่อฉันใช้การเชื่อมต่อ http ระหว่าง loadbalancer และแบ็กเอนด์อย่างไรก็ตามการใช้ https ไม่ทำงาน การกำหนดค่าของ loadbalancer:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
แบ็กเอนด์มีใบรับรองที่ลงชื่อด้วยตนเองเท่านั้นในตอนนี้ซึ่งเป็นสาเหตุที่การตรวจสอบใบรับรองถูกปิดใช้งาน
บันทึกข้อผิดพลาดบน loadbalancer มีดังต่อไปนี้:
[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()
หน้าข้อผิดพลาดในเบราว์เซอร์ประกอบด้วย:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
ตามที่ฉันได้กล่าวไปแล้วการเปลี่ยนการกำหนดค่าโปรโตคอล http และพอร์ต 80 ทำงาน การเชื่อมต่อ https ระหว่างไคลเอนต์และ loadbalancer ยังทำงานดังนั้นโมดูล ssl ของ loadbalancer ดูเหมือนว่าจะตั้งค่าอย่างถูกต้อง การเชื่อมต่อโดยตรงกับส่วนหลังผ่าน https ยังไม่ได้ให้ข้อผิดพลาดใด ๆ
ขอบคุณล่วงหน้าสำหรับเวลาของคุณ
แก้ไข: ฉันคิดออกปัญหาคือว่าชื่อสามัญใบรับรองของฉันไม่ตรงกับชื่อเซิร์ฟเวอร์ ฉันคิดว่าSSLProxyVerifyจะไม่มีใครทำให้เกิดความไม่ตรงกันนี้ แต่จะไม่ถูกต้อง ก่อนที่จะ apache 2.4.5 การตรวจสอบนี้สามารถปิดการใช้งานโดยใช้SSLProxyCheckPeerCN offแต่ในรุ่นที่สูงกว่า (ฉันใช้ 2.4.7) SSLProxyCheckPeerName ปิดยังต้องระบุ
เอกสาร Apache สำหรับ sslproxycheckpeername
การกำหนดค่าการทำงานมีลักษณะดังนี้:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Proxy balancer://testcluster>
BalancerMember https://[backend1]:443/test
BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
น่าเสียดายที่ฉันไม่สามารถตอบคำถามของตัวเองเนื่องจากขาดชื่อเสียงดังนั้นฉันจึงแก้ไขคำถามของฉันฉันหวังว่าสิ่งนี้จะช่วยให้ทุกคนที่พบปัญหาที่คล้ายกัน