OpenSSL ส่งคืนใบรับรอง SSL ที่แตกต่างไปตามที่ Chrome แสดง


13

เมื่อทำการสอบถาม URL ของ CDN ของ Sparkfun โดยใช้ OpenSSL ด้วยคำสั่งต่อไปนี้:

openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443

ชื่อทั่วไปที่ส่งคืนในใบรับรองคือ*.sparkfun.comซึ่งไม่สามารถตรวจสอบได้ แต่ถ้าคุณโหลดโฮสต์ใน Chrome ชื่อสามัญที่ปรากฏคือ*.cloudfront.net

เกิดขึ้นที่นี่คืออะไร?

นี่เป็นสาเหตุของปัญหาเนื่องจากสภาพแวดล้อมที่ฉันอยู่ในพร็อกซี SSL ผ่าน Squid SSL_Bump ซึ่งสร้างใบรับรองที่ลงนามโดย CA ที่เชื่อถือได้ในพื้นที่ของฉันสำหรับโดเมน ใช้ได้กับทุกโดเมน แต่ด้านบนเนื่องจาก CN ไม่ตรงกันเนื่องจากใบรับรองใหม่ถูกสร้างขึ้นโดยใช้ OpenSSL

แก้ไข - ฉันตรวจสอบแล้วว่าเกิดขึ้นกับ OpenSSL บนเซิร์ฟเวอร์ในศูนย์ข้อมูลระยะไกลที่มีการเชื่อมต่อโดยตรงกับอินเทอร์เน็ตโดยไม่มีพร็อกซีหรือตัวกรองที่เกี่ยวข้อง

แก้ไข - ปัญหาเกิดจาก SNI เป็นที่ยอมรับ แต่เพื่อกรอกข้อมูลว่าทำไมมันทำให้เกิดปัญหากับ Squid และ SSL_Bump:

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

นำมาจาก: http://wiki.squid-cache.org/Features/BumpSslServerFirst

คำตอบ:


23

CloudFront ใช้ SNI วิธีการใช้ใบรับรองหลายใบบน IP เดียว เบราว์เซอร์สมัยใหม่ทั้งหมดรองรับสิ่งนี้เช่นเดียวกับคำสั่ง s_client ของ openssl แต่ s_client ไม่ได้ทำสิ่งนี้อย่างน่าอัศจรรย์ คุณต้องบอกให้ใช้:

openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net  -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts

2
Yaaay Dennis นั่นคือ " โอ้ฉันไม่ทราบว่า " เรียงลำดับสำหรับ SF วันนี้และมันยังไม่ถึง 9 โมงเช้า! +1 จากฉัน
MadHatter

9

Chrome รองรับSNIโดยแจ้งเซิร์ฟเวอร์ว่าจะส่งใบรับรองใด s_clientคำสั่งไม่ได้

มีรายละเอียดเพิ่มเติมของการใช้งาน CloudFront ของ SNI เป็นที่นี่

เมื่อคุณใช้ SNI Custom SSL ผู้ใช้บางคนอาจไม่สามารถเข้าถึงเนื้อหาของคุณเนื่องจากเบราว์เซอร์รุ่นเก่าบางรุ่นไม่รองรับ SNI และจะไม่สามารถสร้างการเชื่อมต่อกับ CloudFront เพื่อโหลดเนื้อหาเวอร์ชัน HTTPS สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ SNI รวมถึงรายการเบราว์เซอร์ที่รองรับโปรดไปที่หน้าคำถามที่พบบ่อยของเรา

และ:

SNI Custom SSL ขึ้นอยู่กับส่วนขยาย SNI ของโปรโตคอล Transport Layer Security ซึ่งอนุญาตให้หลายโดเมนให้บริการปริมาณการใช้งาน SSL ผ่านที่อยู่ IP เดียวกันโดยรวมถึงผู้ดูชื่อโฮสต์กำลังพยายามเชื่อมต่อ เช่นเดียวกับ Dedicated IP Custom SSL, CloudFront นำเสนอเนื้อหาจากแต่ละตำแหน่ง Amazon CloudFront และมีความปลอดภัยเช่นเดียวกับคุณสมบัติ Dedicated IP Custom SSL SNI Custom SSL ทำงานได้กับเบราว์เซอร์ที่ทันสมัยที่สุดรวมถึง Chrome เวอร์ชัน 6 และใหม่กว่า (ทำงานบน Windows XP และใหม่กว่าหรือ OS X 10.5.7 ขึ้นไป), Safari เวอร์ชัน 3 ขึ้นไป (ทำงานบน Windows Vista และใหม่กว่าหรือ Mac OS X 10.5 6. และใหม่กว่า), Firefox 2.0 และใหม่กว่าและ Internet Explorer 7 และใหม่กว่า (ทำงานบน Windows Vista และใหม่กว่า) เบราว์เซอร์รุ่นเก่าที่ไม่สนับสนุน SNI ไม่สามารถสร้างการเชื่อมต่อกับ CloudFront เพื่อโหลดเนื้อหา HTTPS ของคุณ


s_client รองรับ SNI ได้ดี ...
Dennis Kaarsemaker

+1 จากฉันต่อไปเนื่องจากมีเอกสารยอดเยี่ยมแสดง
MadHatter

ฉันไม่ได้บอกว่าs_clientไม่สนับสนุน CLI ฉันว่าs_clientคำสั่ง (ใน OP) ไม่ได้
David Schwartz

@DavidSchwartz - จริงๆแล้วไคลเอนต์ OpenSSL ของฉันรองรับ SNI และฉันสามารถตรวจสอบได้โดยใช้ข้อมูลที่อธิบายไว้ที่นี่
Geoffrey

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