เนื่องจากไม่มีใครให้การดักสายนี่เป็นเรื่องหนึ่ง
Name Server (ส่วนหนึ่งของโดเมนของ URL) ที่จะนำเสนอในClientHello
แพ็คเก็ตในข้อความธรรมดา
ต่อไปนี้แสดงคำขอเบราว์เซอร์ไปที่:
https://i.stack.imgur.com/path/?some=parameters&go=here
ดูคำตอบนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์เวอร์ชัน TLS (มี 3 รายการ - ไม่ใช่เวอร์ชันฟิลด์ที่แต่ละหมายเลขมีหมายเลขเวอร์ชัน!)
จากhttps://www.ietf.org/rfc/rfc3546.txt :
3.1 บ่งชี้ชื่อเซิร์ฟเวอร์
[TLS] ไม่มีกลไกให้ไคลเอ็นต์บอกเซิร์ฟเวอร์ถึงชื่อของเซิร์ฟเวอร์ที่กำลังติดต่อ อาจเป็นที่พึงปรารถนาสำหรับลูกค้าที่ให้ข้อมูลนี้เพื่ออำนวยความสะดวกในการเชื่อมต่อที่ปลอดภัยไปยังเซิร์ฟเวอร์ที่โฮสต์เซิร์ฟเวอร์ 'เสมือน' หลายแห่งที่อยู่เครือข่ายพื้นฐานเดียว
เพื่อให้ชื่อเซิร์ฟเวอร์ไคลเอนต์อาจรวมส่วนขยายประเภท "server_name" ในไคลเอนต์ (ขยาย) สวัสดี
ในระยะสั้น:
FQDN (ส่วนหนึ่งของโดเมนของ URL) อาจจะส่งในที่ชัดเจนภายในClientHello
แพ็คเก็ตถ้าขยาย SNI ถูกนำมาใช้
ส่วนที่เหลือของ URL ( /path/?some=parameters&go=here
) ไม่มีธุรกิจที่อยู่ภายในClientHello
เนื่องจาก URL คำขอเป็นสิ่ง HTTP (OSI Layer 7) ดังนั้นจะไม่แสดงในการจับมือ TLS (Layer 4 หรือ 5) ที่จะมาในภายหลังในGET /path/?some=parameters&go=here HTTP/1.1
การร้องขอ HTTP, AFTER ที่เชื่อถือได้ของช่อง TLS ถูกจัดตั้งขึ้น
บทสรุปผู้บริหาร
ชื่อโดเมนอาจถูกส่งแบบชัดเจน (หากใช้ส่วนขยาย SNI ในการจับมือ TLS) แต่ URL (พา ธ และพารามิเตอร์) จะถูกเข้ารหัสเสมอ
มีนาคม 2019 อัพเดท
ขอบคุณcarlin.scott ที่นำสิ่งนี้มา
เพย์โหลดในส่วนขยาย SNI สามารถเข้ารหัสได้ผ่านข้อเสนอ RFC ฉบับร่างนี้ ความสามารถนี้มีอยู่ใน TLS 1.3 เท่านั้น (เป็นตัวเลือกและขึ้นอยู่กับการใช้งานทั้งสองด้าน) และไม่มีความเข้ากันได้แบบย้อนกลับกับ TLS 1.2 และด้านล่าง
CloudFlare กำลังทำอยู่และคุณสามารถอ่านเพิ่มเติมเกี่ยวกับ internals ได้ที่นี่ -
ถ้าไก่ต้องมาก่อนไข่คุณจะใส่ไก่ที่ไหน
ในทางปฏิบัติหมายความว่าแทนที่จะส่ง FQDN เป็นข้อความธรรมดา (เช่นรายการจับภาพ Wireshark) ตอนนี้จะถูกเข้ารหัส
หมายเหตุ:ที่อยู่ด้านความเป็นส่วนตัวมากกว่าความปลอดภัยตั้งแต่การค้นหา DNS ย้อนกลับอาจเปิดเผยโฮสต์ปลายทางที่ตั้งใจอยู่แล้ว