HTTP CONNECT: พร็อกซี HTTP จัดการ HTTPS อย่างไร
ติดตามคำขอ HTTPS ผ่านพร็อกซี HTTP แยกคำตอบ CONNECT ออกจากคำตอบของเซิร์ฟเวอร์ต้นทาง และหาว่าอุโมงค์ล้มเหลวตรงไหน
“200 Connection Established” หมายถึงพร็อกซียอมรับอุโมงค์ เว็บไซต์ยังไม่ได้ส่งหน้ากลับมา ขั้นต่อไปคือ TLS กับปลายทาง แล้วจึงเป็นคำขอ HTTPS จริง
จากการเชื่อมต่อพร็อกซีถึงคำตอบของเว็บไซต์
- ไคลเอนต์เชื่อมต่อกับปลายทางของพร็อกซี
- ไคลเอนต์ขอให้พร็อกซีเชื่อมต่อกับโฮสต์และพอร์ตปลายทาง
- พร็อกซียอมรับหรือปฏิเสธคำขอนั้น
- เมื่อยอมรับแล้ว ไคลเอนต์จะเจรจา TLS กับปลายทางผ่านอุโมงค์
- ไคลเอนต์ส่งคำขอ HTTPS และรับคำตอบของเว็บไซต์ภายใน TLS
การถูกปฏิเสธการเชื่อมต่อพร็อกซี อุโมงค์ถูกปฏิเสธ และข้อผิดพลาดใบรับรอง เกิดขึ้นคนละจุดในลำดับนี้ หาขั้นตอนสุดท้ายที่สำเร็จก่อนเปลี่ยนการตั้งค่า
การแลกเปลี่ยน CONNECT
ใน HTTP/1.1 การแลกเปลี่ยนแบบย่อเป็นดังนี้:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
เป้าหมายของคำขอคือโฮสต์และพอร์ต โดยไม่มีพาธหรือพารามิเตอร์คิวรีของเว็บไซต์ หลังได้รับคำตอบ CONNECT ที่สำเร็จ การเชื่อมต่อจะส่งผ่านไบต์ของอุโมงค์ สำหรับปลายทาง HTTPS การแลกเปลี่ยนถัดไปของไคลเอนต์คือการจับมือ TLS
อ่านรหัสสถานะที่เป็นตัวเลขแทนการเทียบข้อความอธิบายภาษาอังกฤษ พร็อกซีอาจใช้ข้อความต่างกันสำหรับสถานะเดียวกัน
สังเกตด้วย curl
สำหรับพร็อกซี HTTP บนพอร์ตภายในเครื่อง 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/เปลี่ยนที่อยู่รับฟังเป็นปลายทางของคุณ หากต้องการตัวเลือก ให้ดูรายการพร็อกซี HTTPแล้วทดสอบรายการที่เลือก รายการยกเว้นที่ว่างทำให้การเรียกครั้งนี้เลือกใช้พร็อกซี ตามลำดับเวลา ให้มองหาการเชื่อมต่อพร็อกซี คำตอบ CONNECT การตรวจสอบใบรับรองปลายทาง และคำตอบของเว็บไซต์ ถ้อยคำในบันทึกขึ้นอยู่กับบิลด์ของ curl
ปลายทางอาจส่ง 404, 429 หรือ 500 กลับมาหลังจากพร็อกซียอมรับอุโมงค์แล้ว และอาจล้มเหลวระหว่าง TLS ก่อนส่งคำตอบ HTTP ใด ๆ กลับมา
หยุดตรงไหน?
| สิ่งที่พบ | สิ่งที่ตรวจต่อ |
|---|---|
| การเชื่อมต่อพร็อกซีถูกปฏิเสธ | ที่อยู่พร็อกซี พอร์ตที่รับฟัง โพรเซส และการเข้าถึงเครือข่าย |
| พร็อกซีส่ง 407 กลับมา | บัญชีพร็อกซีและรูปแบบการยืนยันตัวตน |
| พร็อกซีปฏิเสธปลายทางหรือพอร์ต | นโยบายการเข้าถึงและปลายทาง CONNECT ที่อนุญาต |
| อุโมงค์เปิดแล้ว แต่การตรวจสอบ TLS ล้มเหลว | ชื่อปลายทาง ที่เก็บความเชื่อถือ นาฬิกา และการดัก TLS แบบมีการจัดการที่อาจมีอยู่ |
| TLS สำเร็จและเว็บไซต์ส่งข้อผิดพลาดกลับมา | คำตอบของเว็บไซต์ |
เมื่อต้องการเปรียบเทียบ ให้คงด้านหนึ่งไว้เหมือนเดิม: ลองปลายทางอื่นผ่านพร็อกซีเดิม หรือเปรียบเทียบปลายทางเดิมผ่านเส้นทางตรงที่ได้รับอนุญาต
อุโมงค์ยังมีผู้ให้บริการ
พร็อกซีรู้ปลายทาง CONNECT และจัดการจังหวะเวลากับปริมาณทราฟฟิก TLS จากต้นทางถึงปลายทางตามปกติปกป้องเนื้อหาแอปพลิเคชันของเว็บไซต์จากพร็อกซีที่ไม่ได้ยุติเซสชัน TLS นั้น พร็อกซีดักรับแบบมีการจัดการที่ไคลเอนต์เชื่อถือมีความสัมพันธ์ด้านความเชื่อถือที่ต่างออกไป