Score:0

haproxy สองแอปพลิเคชันบนพอร์ตเดียวกันโดยมีใบรับรองต่างกัน

ธง cn

ฉันกำลังตั้งค่า haproxy การกำหนดค่าของฉันคือ:

ส่วนหน้าทั้งสองแอป
        ผูก *:9999
        โหมด http
        acl prov path_end -i /prov-0.0.1-SNAPSHOT/
        เส้นทางเว็บ acl สิ้นสุด -i /web-0.0.1-SNAPSHOT/
        acl prov1 path_end -i /prov-0.0.1-SNAPSHOT/testAuthenticated.html
        acl web1 path_end -i /web-0.0.1-SNAPSHOT/testAuthenticated.html
        use_backend โฟกัสหากพิสูจน์
        use_backend โฟกัสถ้า prov1
        use_backend cnt ถ้าเว็บ
        use_backend cnt ถ้า web1

และทำงานได้อย่างถูกต้องโดยไม่มี https ตอนนี้ฉันต้องการเพิ่ม https แต่ทั้งสองแอปควรเรียก haproxy ที่พอร์ต 8443 (https://localhost:8443/prov-0.0.1-SNAPSHOT และ https://localhost:8443/web-0.0.1-SNAPSHOT) แต่มีใบรับรองต่างกัน - prov(haproxyPROV.pem), เว็บ(haproxyWEB.pem). ฉันจะกำหนดค่าได้อย่างไร

ฉันเหนื่อย:

ฟรอนท์เอนด์ https
        ผูก *:8443 ssl crt /etc/haproxy/haproxyWEB.pem
        โหมด http

แต่ที่นี่ฉันสามารถมีหนึ่งใบรับรองต่อพอร์ต

Michael Hampton avatar
cz flag
เพียงใช้ใบรับรองเดียว
Michu93 avatar
cn flag
@MichaelHampton ฉันใช้ใบรับรองใบเดียวไม่ได้ ฉันรู้ว่านั่นจะง่าย แต่ไม่ใช่ในกรณีนี้ ฉันต้องการใบรับรองทั้งสองใบ
Michael Hampton avatar
cz flag
เอ๊ะ? เหตุใดคุณจึงมีใบรับรองสองใบสำหรับวิชาเดียวกัน คุณละเว้นรายละเอียดที่สำคัญหรือไม่? ถ้าเป็นเช่นนั้น แก้ไขคำถามของคุณ
Michu93 avatar
cn flag
@MichaelHampton ลูกค้าต้องการ พวกเขาต้องการใบรับรองสองใบในการยิงพร็อกซีย้อนกลับไปยังแอปอื่นบน Tomcat
Michael Hampton avatar
cz flag
มันไม่สมเหตุสมผลเลยที่จะมีใบรับรองสองใบสำหรับ localhost:8443 เกิดอะไรขึ้นที่นี่จริงๆ?
Michu93 avatar
cn flag
@MichaelHampton ในชีวิตจริงจะไม่ใช่ localhost แน่นอน มีเซิร์ฟเวอร์ที่ควรยอมรับทั้ง /web และ /prov บนพอร์ตเดียวกันโดยมีใบรับรองต่างกัน สามารถทำได้ใน haproxy หรือไม่
Michael Hampton avatar
cz flag
มันไม่สมเหตุสมผลเลยที่จะมีใบรับรองสองใบสำหรับชื่อ _any_ ไม่ว่าจะเป็น localhost หรืออย่างอื่น Haproxy ไม่เกี่ยวข้อง ไม่สามารถทราบได้ว่าจะใช้ใบรับรองใด
Score:1
ธง ng

คุณสามารถใช้ใบรับรองมากกว่าหนึ่งครั้งในหนึ่งพอร์ต:

ส่วนหน้า foo
    ผูก *:8443 ssl crt /path/to/cert1.pem crt /path/to/cert2.pem

Haproxy ใช้ TLS SNI เพื่อจับคู่ใบรับรองกับการเชื่อมต่อ (หากไม่พบ SNI หรือไม่พบการจับคู่ ใบรับรองแรกบน ผูก ใช้บรรทัด (cert1.pem ในตัวอย่างด้านบน)) ดังนั้นเพื่อให้บรรลุเป้าหมาย คุณจะต้องชี้ชื่อโดเมนที่แตกต่างกันสองชื่อไปที่ host:port นี้ เช่น เว็บ.example.com และ prov.example.com ชี้ไปที่โฮสต์เดียวกัน นั่นคือสิ่งที่ความคิดเห็นทั้งหมดเกี่ยวกับฉันเดา
หมายเหตุด้านข้างคุณใช้ เส้นทาง_สิ้นสุด ใน ACL ของคุณ เช่น acl prov path_end -i /prov-0.0.1-SNAPSHOT/แต่นั่นก็จะตรงกันด้วย /foobar/prov-0.0.1-SNAPSHOT/ และ /web-0.0.1-SNAPSHOT/prov-0.0.1-SNAPSHOT/ซึ่งอาจใช่หรือไม่ใช่สิ่งที่คุณต้องการก็ได้ โดยปกติ เส้นทาง หรือ เส้นทาง_beg เหมาะสมกว่า

Michu93 avatar
cn flag
ขอบคุณ @tbielaszewski! อย่างไรก็ตาม ฉันใช้คำแนะนำของ @MichaelHampton และใช้ฟรอนต์เอนด์สองรายการที่มีพอร์ตต่างกันเรียกแบ็กเอนด์เดียวกัน: `frontend web_https bind *:443 ssl crt /etc/haproxy/haproxyWEB.pem use_backend duo frontend prov_https bind *:9999 ssl crt /etc/haproxy/ haproxyPROV.pem use_backend duo` แต่หมายความว่าเมื่อฉันมีเพียง localhost ฉันยังใช้สองใบรับรองในพอร์ตเดียวไม่ได้ใช่ไหม
tbielaszewski avatar
ng flag
พอร์ตที่แตกต่างกันหรือชื่อโฮสต์ที่แตกต่างกัน (SNI) Tertium ไม่ใช่ดาเทอร์

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา