Score:1

HAProxy ไม่ทำงานกับ SNI และ ACL

ธง gb

ฉันพยายามให้ haproxy ใช้ acls กับ SNI และไม่ให้ความร่วมมือ แสดงใบรับรองที่ถูกต้อง ดังนั้น SNI จะต้องทำงาน อย่างไรก็ตาม ฉันไม่สามารถเลือกแบ็กเอนด์ตามชื่อโฮสต์ใน SNI ได้

ซึ่งฉันตรวจสอบการกำหนดค่าฉันได้รับต่อไปนี้

[คำเตือน] (21486) : พร็อกซี 'fe-dr-totalflood.com': การดึงตัวอย่าง L6 ถูกละเว้นบนพร็อกซี HTTP (ประกาศที่ ./haproxy.cfg.tmp:176)
[คำเตือน] (21486) : พร็อกซี 'fe-dr-totalflood.com': การดึงตัวอย่าง L6 ถูกละเว้นบนพร็อกซี HTTP (ประกาศที่ ./haproxy.cfg.tmp:177)
พบคำเตือน
ไฟล์การกำหนดค่าถูกต้อง

ฉันไม่รู้ว่าข้อความแสดงข้อผิดพลาดหมายถึงอะไร และฉันได้ใส่หมายเหตุถัดจากบรรทัดที่เกี่ยวข้องในตัวอย่างข้อมูลต่อไปนี้

ส่วนหน้า fe-dr-totalflood.com
  โหมด http
  ผูก 172.22.8.229:80
  ผูก 172.22.8.229:443 ssl crt dr-www.totalflood.com.crt crt dr-xml.totalflood.com.crt

  ## http->https เปลี่ยนเส้นทาง
  http-คำขอเปลี่ยนเส้นทาง https ยกเว้น { ssl_fc }

  ## รายการควบคุมการเข้าถึง
  acl httpssl_fc
  acl ให้เข้ารหัส-acl path_beg /.well-known/acme-challenge/
  acl www-acl req_ssl_sni dr-www.totalflood.com
  acl xml-acl req_ssl_sni dr-xml.totalflood.com

  # ถ้า Let's Encrypt ให้ข้ามส่วนที่เหลือและข้ามไปที่แบ็กเอนด์
  use_backend be-letsencrypt ถ้า letsencrypt-acl

  use_backend be-dr-www.totalflood.com ถ้า www-acl <------ 176
  use_backend be-dr-xml.totalflood.com ถ้า xml-acl <------ 177

  default_backend be-ไม่มีไซต์ดังกล่าว

#---------------------------------------------
แบ็กเอนด์ be-dr-www.totalflood.com
  โหมด http
  วงเวียนสมดุล
  คุกกี้ SERVERID แทรก nocache ทางอ้อมสูงสุด 30m

  ## ตั้งชื่อโฮสต์ในส่วนหัว
  พบ acl h_host_exists req.hdr (โฮสต์) -m
  http-request del-header Host ถ้า h_host_exists
  http-request set-header Host www.totalflood.com

  เซิร์ฟเวอร์เริ่มต้นตรวจสอบ maxconn 100

  เซิร์ฟเวอร์ scadmzp2wb01 scadmzp2wb01.lereta.net:80 คุกกี้ scadmzp2wb01

#---------------------------------------------
แบ็กเอนด์ be-dr-xml.totalflood.com
  โหมด http
  วงเวียนสมดุล
  คุกกี้ SERVERID แทรก nocache ทางอ้อมสูงสุด 30m

  ## ตั้งชื่อโฮสต์ในส่วนหัว
  พบ acl h_host_exists req.hdr (โฮสต์) -m
  http-request del-header Host ถ้า h_host_exists
  http-request set-header โฮสต์ xml.totalflood.com

  เซิร์ฟเวอร์เริ่มต้นตรวจสอบ maxconn 100

  เซิร์ฟเวอร์ scadmzxml01 scadmzxml01.lereta.net:80 คุกกี้ scadmzxml01

#---------------------------------------------
แบ็กเอนด์ be-letsencrypt
  เซิร์ฟเวอร์ localhost 127.0.0.1:8888

#---------------------------------------------
แบ็กเอนด์เป็นไซต์ดังกล่าว
  เซิร์ฟเวอร์ localhost 127.0.0.1:8888

เมื่อฉันพยายามเข้าถึงไซต์ใดไซต์หนึ่ง ฉันจะกดแบ็คเอนด์เริ่มต้นเสมอไม่ว่าจะเกิดอะไรขึ้นก็ตาม ฉันได้ทดสอบสิ่งนี้โดยเปลี่ยนแบ็กเอนด์เริ่มต้นไปที่อื่น ถ้าฉัน ต่อท้าย url เส้นทาง /.well-known/acme-challenge อย่างใดอย่างหนึ่ง haproxy ดูเหมือนจะส่งฉันไปยังสถานที่ที่ถูกต้อง

สิ่งที่ฉันไม่สามารถเข้าใจได้คือเหตุใด acls ที่อิงตามข้อมูล SNI จึงใช้งานไม่ได้

ฉันใช้เวอร์ชัน 2.4.2 ของ haproxy OracleLinux 8

$haproxy -v
HAProxy เวอร์ชั่น 2.4.2-553dee3 2021/07/07 - https://haproxy.org/
สถานะ: สาขาที่รองรับระยะยาว - จะหยุดรับการแก้ไขประมาณไตรมาสที่ 2 ปี 2026
ข้อบกพร่องที่รู้จัก: http://www.haproxy.org/bugs/bugs-2.4.2.html
ทำงานบน: Linux 5.4.17-2136.304.4.1.el8uek.x86_64 #2 SMP อ. 8 ก.พ. 11:54:24 PST 2022 x86_64
Score:1
ธง gu

อ้างจากเอกสาร:

การดึงตัวอย่างจากเนื้อหาบัฟเฟอร์จะแตกต่างจากก่อนหน้านี้เล็กน้อย การดึงตัวอย่างด้านบนเนื่องจากข้อมูลที่สุ่มตัวอย่างเป็นข้อมูลชั่วคราว ข้อมูลเหล่านี้สามารถ ใช้เฉพาะเมื่อพร้อมใช้งานและจะหายไปเมื่อมีการส่งต่อ ด้วยเหตุนี้ ตัวอย่างที่ดึงจากเนื้อหาบัฟเฟอร์ในระหว่างการร้องขอจึงไม่สามารถทำได้ ใช้ในการตอบกลับเช่น แม้ว่ากำลังดึงข้อมูลอยู่ก็ตาม สามารถเปลี่ยนแปลงได้

นั่นเป็นเหตุผลที่คุณได้รับคำเตือนเกี่ยวกับการละเว้น ACL ของเลเยอร์ 6

แทนที่จะใช้ req_ssl_sniคุณมีประโยชน์ที่ดีกว่า ssl_fc_sni ที่เลเยอร์ 5 ซึ่งจะทำให้คุณได้รับข้อมูลเดียวกันแต่เชื่อถือได้มากกว่า

scarville avatar
gb flag
นั่นได้ผล ขอขอบคุณ.

โพสต์คำตอบ

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