Score:1

เซิร์ฟเวอร์สามารถเสนอใบรับรอง TLS มากกว่าหนึ่งรายการได้หรือไม่

ธง br

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

ฉันรู้ว่ามีคำถามที่คล้ายกัน แต่พวกเขาถามเกี่ยวกับการเปลี่ยนแปลงใบรับรองที่ใช้ตามโดเมนย่อย (เป็นไปได้) หรือคำนำหน้าพาธ (เป็นไปไม่ได้ IIUC เพราะในขณะเจรจา เซิร์ฟเวอร์รู้เฉพาะผู้มีอำนาจ ไม่ใช่คำขอ-URI แบบเต็ม)

Paul avatar
cn flag
ฉันไม่มีแหล่งที่มาของสิ่งนี้ นอกจากระบุว่าฉันเห็นไซต์ Cloudflare จำนวนมาก โดยเฉพาะที่มีทั้งใบรับรอง EC และ RSA ฉันคาดเดาว่าลูกค้ากำลังตัดสินใจว่าจะใช้ตัวใด
Score:2
ธง cn
Bob

เซิร์ฟเวอร์สามารถเสนอใบรับรอง TLS มากกว่าหนึ่งรายการได้หรือไม่

เซิร์ฟเวอร์สามารถ สนับสนุน ใบรับรอง TLS มากกว่าหนึ่งใบ แต่ก็ทำได้เพียง เสนอ ใบรับรอง TLS เดียวในการจับมือ TLS กับไคลเอนต์ AFAIK ซึ่งเป็นขีดจำกัดที่กำหนดไว้ในโปรโตคอล TLS (การจับมือกัน) อาร์เอฟซี 5246

ความสามารถในการ สนับสนุน ใบรับรองหลายใบถูกใช้บ่อยที่สุดเมื่อคุณมีชื่อโดเมนหลายชื่อที่ชี้ไปที่เซิร์ฟเวอร์เดียวกัน

การระบุชื่อเซิร์ฟเวอร์ ส่งชื่อโฮสต์ของเซิร์ฟเวอร์ในการจับมือ TLS ที่ทำโดยไคลเอนต์ ซึ่งช่วยให้เซิร์ฟเวอร์เลือกใบรับรองที่ตรงกันที่สุดเพื่อใช้สำหรับการเชื่อมต่อนั้น เช่น. เซิร์ฟเวอร์สามารถใช้ใบรับรองสำหรับ www.example.com เมื่อไคลเอ็นต์ระบุว่าต้องการเชื่อมต่อ www.example.com และสามารถใช้ใบรับรองอื่น (หรือค่าเริ่มต้น) เมื่อไคลเอ็นต์เชื่อมต่อกับที่อยู่ IP เท่านั้น ไม่มีชื่อโฮสต์หรือชื่อโฮสต์อื่นในข้อความ ClientHello

นอกจากชื่อเซิร์ฟเวอร์จากข้อความการจับมือ TLS ของ ClientHello แล้ว เซิร์ฟเวอร์สามารถกำหนดค่าให้ใช้พารามิเตอร์อื่นเพื่อเลือกใบรับรองอื่นได้

ตัวอย่างเช่น เมื่อระหว่าง TLSv1.2 handshake ไคลเอ็นต์ระบุว่าการตั้งค่าแรกคือใช้เส้นโค้งวงรีแทน RSA คีย์/ใบรับรอง ECDSA สามารถเสนอได้ และสำหรับไคลเอ็นต์ที่ไม่ต้องการ ใบรับรอง RSA สามารถเสนอแทนได้
ดูตัวอย่าง https://www.haproxy.com/blog/serving-ecc-and-rsa-certificates-on-same-ip-with-haproxy/ และ/หรือ https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile

คุณสามารถทำเช่นเดียวกันกับไคลเอนต์รุ่นเก่าที่ไม่รองรับรหัสที่สูงกว่า TLSv1.0

แต่เมื่อเซิร์ฟเวอร์เลือกใบรับรองแล้ว จะไม่มีทางเลือกอื่น ไคลเอ็นต์อาจยอมรับหรือปฏิเสธใบรับรองที่เสนอให้

ByteEater avatar
br flag
[คำตอบนี้](https://security.stackexchange.com/a/46992) อ้างอิง RFC 5426 ส่วนที่ 7.4.1.1: "เซิร์ฟเวอร์อาจส่งข้อความ HelloRequest ได้ทุกเมื่อ" สามารถใช้เพื่อเสนอใบรับรองอื่นเมื่อลูกค้าปฏิเสธใบรับรองที่เสนอก่อนหน้านี้ได้หรือไม่
cn flag
Bob
เป็นการยากที่จะส่งบางสิ่งแม้ว่าเมื่อไคลเอนต์หยุดการเชื่อมต่อเนื่องจากไม่สามารถตรวจสอบใบรับรองเซิร์ฟเวอร์ได้...

โพสต์คำตอบ

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