Score:0

การแก้ไขปัญหา LDAPS/TLS/HAproxy ใช้ใบรับรอง SSL ไม่ถูกต้อง

ธง jp

โอเค ฉันมีสองเซิร์ฟเวอร์.. หนึ่งเซิร์ฟเวอร์เก่า (Ubuntu 16) และอีกหนึ่งเซิร์ฟเวอร์ใหม่ (Ubuntu 20)

ทั้งคู่มี Haproxy และภายในการกำหนดค่าจะเชื่อมโยงกับพอร์ตเดียวกันและใบรับรอง .PEM เดียวกัน เมื่อฉันทดสอบใบรับรอง SSL โดยใช้ s_client ของ OpenSSL จากโฮสต์ Windows .. ฉันเห็นใบรับรองที่คาดไว้เมื่อทดสอบเซิร์ฟเวอร์เก่า .. แต่ด้วยเหตุผลบางประการ เซิร์ฟเวอร์ใหม่ส่งใบรับรองของเซิร์ฟเวอร์ส่วนหลังซึ่งเป็นใบรับรองภายใน

เพื่อช่วยวาดภาพเซิร์ฟเวอร์เก่าส่ง ldaps.domain.comข้อมูลใบรับรองของ แต่เซิร์ฟเวอร์ใหม่กำลังส่ง internalDC.domain.comใบรับรองของ

เซิร์ฟเวอร์ Haproxy ทั้งสองเครื่องอนุญาต TCP/636 จาก DMZ ไปยัง LAN ทั้งคู่ใช้เซิร์ฟเวอร์แบ็กเอนด์เดียวกัน ดังนั้นฉันจึงงงมาก

คำแนะนำใด ๆ ที่จะได้รับการชื่นชมมาก!

Ginnungagap avatar
gu flag
คุณใช้ `-servername` เมื่อทดสอบกับ `s_client` หรือไม่ ใบรับรองขึ้นอยู่กับ SNI ใน HAProxy หรือไม่
jp flag
ใช่ สตริง cmd ที่ฉันใช้คือ: `openssl s_client -connect ldaps.domain.com:636` สำหรับการทดสอบทั้งสอง .. การสลับ IP ของเซิร์ฟเวอร์ในไฟล์ Hosts AFAIK Haproxy กำลังเฝ้าดูโดเมนเนื่องจากนั่นคือทั้งหมดที่กล่าวถึงในการกำหนดค่า
Ginnungagap avatar
gu flag
คุณไม่ได้ใช้ `-servername` ซึ่งเป็นชื่อที่ระบุโดย OpenSSL เมื่อดำเนินการ TLS handshake เนื่องจากเป็นอยู่ คุณกำลังเชื่อมต่อกับ IP ldaps.domain.com ที่แก้ไขโดยไม่มี SNI
jp flag
ฉันเข้าใจผิด.. SNI ใช่หรือเปล่า: https://stuff-things.net/2016/11/30/haproxy-sni/ ถ้าอย่างนั้น ไม่เลย.. ฉันไม่ได้ใช้มัน การกำหนดค่าของฉันง่ายกว่า: ไคลเอนต์ LDAPS -> haproxy -> แบ็กเอนด์ DC/LDAPS ดังนั้น ldaps.domain.com สำหรับส่วนหน้า ดังนั้นส่วนหลังจึงเป็นตัวควบคุมโดเมนคู่หนึ่ง.. ทั้งส่วนหน้าและส่วนหลังถูกตั้งค่าสำหรับพอร์ต 636
Ginnungagap avatar
gu flag
แสดงการกำหนดค่า HAProxy ของคุณ หากไม่ใช่ SNI แสดงว่าเป็นการสิ้นสุด TLS ซึ่งกำหนดค่าไม่ถูกต้อง
jp flag
นี่คือไฟล์ conf ที่ผ่านการฆ่าเชื้อแล้ว: https://paste.centos.org/view/52a6000b ปัญหาของฉันคือเมื่อเชื่อมต่อกับ ldaps.domain1.com โดยใช้เซิร์ฟเวอร์ใหม่นี้ ฉันจะได้รับใบรับรอง SSL สำหรับ domain1-dc01 แทน
jp flag
เป็นเวลานานแล้ว และการตอบคำถามนี้ก็หยุดลงด้วยเหตุผลบางประการ แต่ในที่สุดคุณก็พูดถูก @Ginnungagap ในตอนนั้นฉันไม่รู้ว่า s_client ไม่ได้ส่งต่อหรือใช้โดเมนในค่า -connect และใช้กับ SNI ต้องระบุ -servername ใช้งานได้และนำฉันไปตามถนนเพื่อแก้ไขปัญหา ดังนั้นหากคุณจะเพิ่มคำตอบ ฉันจะยอมรับมัน ขอบคุณ
Ginnungagap avatar
gu flag
คุณอยู่ในตำแหน่งที่ดีกว่าในการตอบคำถาม เนื่องจากคุณมีรายละเอียดที่เกี่ยวข้อง การตอบตัวเองได้ไม่ใช่เรื่องแย่ และคุณควรบันทึกสิ่งที่คุณทำ ข้อบ่งชี้ที่คุณใช้ และวิธีแก้ไขปัญหาของคุณ เนื่องจากมีแนวโน้มที่จะช่วยคนที่มีคำถามเดียวกันมากกว่าที่ฉันสามารถเขียนได้ ซึ่งจะมาก คำตอบที่เน้น TLS ทั่วไปมากขึ้นซึ่ง ServerFault มีมากมายอยู่แล้ว
jp flag
ฉันเดาว่าฉันได้โพสต์จำนวนเงินพอสมควรที่นี่และ Stackoverflow โดยทั่วไปเท่านั้นที่จะตอบตัวเองได้ในภายหลัง ฉันคิดเสมอว่ามันขมวดคิ้วเมื่อหลีกเลี่ยงได้ บ่อยครั้งที่ฉันจะโพสต์ปัญหาของฉันแล้วหลังจากเอาชนะมันเป็นเวลาหนึ่งชั่วโมงเพื่อหาวิธีแก้ปัญหาก่อนที่ใครจะแสดงความคิดเห็น แต่ฉันเดาว่าบางครั้งมันจะจบลงอย่างไร ขอบคุณที่กลับมา @Ginnungagap
Score:0
ธง jp

ในท้ายที่สุด การแก้ไขปัญหานี้คือการใช้สวิตช์ '-servername' ใน s_client ฉันไม่รู้ว่ามันไม่ได้จัดการ SNI โดยค่าเริ่มต้น @Ginnungagap def นำฉันไปในทิศทางนั้น

นอกจากนี้ยังทำให้ฉันค้นพบว่าการกำหนดค่า SNI ของฉันใน haproxy.cfg นั้นไม่ถูกต้องนัก เดิมทีฉันมีบรรทัดเช่น:

use_backend ถ้า { ssl_fc_sni_reg domain.com }

และคนงี่เง่าที่ฉันไม่รู้ว่า 'reg' ย่อมาจาก regex เมื่อฉันเปลี่ยนเป็น 'end' เพราะฉันพยายามจับคู่ชื่อโดมินาเอง .. ทุกอย่างก็เรียบร้อย

โพสต์คำตอบ

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