กำหนดค่าใบรับรอง SSL หลายรายการใน Haproxy


28

อินสแตนซ์ haproxy ของฉันให้บริการ 2 โดเมน (ส่วนใหญ่เพื่อหลีกเลี่ยง XSS บนเว็บไซต์หลัก)

กฎมีลักษณะเช่นนี้

bind :443 ssl crt /etc/ssl/haproxy.pem

acl is_static   hdr_end(Host) -i example.com
acl is_api      hdr_end(Host) -i api.example.com
acl is_files    hdr_end(Host) -i example.io

redirect scheme https if !{ ssl_fc } is_static is_api

ตอนนี้ใช้ SSL /etc/ssl/haproxy.pemเป็นใบรับรองเริ่มต้นซึ่งเป็นใบรับรองสำหรับไม่example.comexample.io

ฉันจะระบุ certs สำหรับชื่อโดเมนหลายชื่อได้อย่างไร

คำตอบ:


60

คุณสามารถต่อใบรับรองทั้งหมดของคุณให้เป็นไฟล์พูดhaproxy1.pemและhaproxy2.pemหรือคุณสามารถระบุไดเรกทอรีที่มีไฟล์ pem ทั้งหมดของคุณ

cat cert1.pem key1.pem > haproxy1.pem 
cat cert2.pem key2.pem > haproxy2.pem

ตามเอกสาร haproxy

จากนั้นในการกำหนดค่าใช้สิ่งนี้:

defaults
  log 127.0.0.1 local0
  option tcplog

frontend ft_test
  mode http
  bind 0.0.0.0:443 ssl crt /certs/haproxy1.pem crt /certs/haproxy2.pem 
  use_backend bk_cert1 if { ssl_fc_sni my.example.com } # content switching based on SNI
  use_backend bk_cert2 if { ssl_fc_sni my.example.org } # content switching based on SNI

backend bk_cert1
  mode http
  server srv1 <ip-address2>:80

backend bk_cert2
  mode http
  server srv2 <ip-address3>:80

อ่านเพิ่มเติมเกี่ยวกับSNI

โปรดทราบว่าการสนับสนุน SSL กำลังอยู่ในระหว่างการพัฒนาสำหรับ haproxy และเห็นได้ชัดว่ามีการใช้งานอย่างมาก

มีวิธีแก้ไขปัญหาอื่น ๆ ที่พูดถึงในหัวข้อนี้: https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

หวังว่านี่จะช่วยได้


การรับรอง / คำสั่งซื้อสำคัญเมื่อทำการต่อหรือไม่
Erik Aigner

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

ฉันตั้งค่าตามที่คุณแนะนำ แต่ haproxy ใช้ใบรับรองแรกสำหรับทุกโดเมน :(
Erik Aigner

ลองcrt-listกับผลลัพธ์เดียวกัน
Erik Aigner

1
ใช่แล้ว! นั่นเป็นเคล็ดลับ!
Erik Aigner

9

ไม่จำเป็นต้องต่อกันหรือระบุรายการใบรับรองอีกต่อไปเพียงแค่ระบุโฟลเดอร์:

frontend public
    bind *:443 ssl crt /etc/haproxy/ssl/

หมายเหตุ: ตรวจสอบให้แน่ใจว่าโฟลเดอร์ไม่ว่างเปล่าและมีไฟล์ PEM ที่ถูกต้องอยู่มิฉะนั้น HAProxy จะไม่ทำงาน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.