WRONG_VERSION_NUMBER กับพร็อกซี: ตรวจสอบ HTTP เทียบ HTTPS
วินิจฉัยความไม่สอดคล้องของการรับส่งผ่านพร็อกซีก่อนจะลดเวอร์ชัน TLS หรือเปลี่ยนการตั้งค่าใบรับรองเพราะข้อผิดพลาด SSL ที่ชวนเข้าใจผิด
ข้อผิดพลาดบอกว่า “เวอร์ชันผิด” จึงชวนให้เริ่มสลับเวอร์ชัน TLS กับพร็อกซี ให้ตรวจสอบความเป็นไปได้ที่เกิดก่อนหน้านี้: ไคลเอนต์ส่ง TLS แฮนด์เชกไปยังพอร์ตที่รอ HTTP ธรรมดาหรือไม่
ปลายทางอย่าง https://example.com/ และพร็อกซีอย่าง http://proxy.example:8080 เป็นคู่ปกติ การเปลี่ยน URL ที่สองเป็น HTTPS บอกให้ไคลเอนต์เข้ารหัสบทสนทนากับพร็อกซีเอง ไม่ใช่คำสั่งให้อนุญาตเว็บไซต์ HTTPS
ระบุบทสนทนา TLS ครั้งแรก
กับพร็อกซี HTTP ไคลเอนต์ส่ง CONNECT ก่อนและรับคำตอบ HTTP ได้ จากนั้นจึงเริ่ม TLS ของปลายทางภายในอุโมงค์ กับพร็อกซี HTTPS จะมีการเชื่อมต่อ TLS แยกไปยังพร็อกซีมาก่อน
ตัวแยกวิเคราะห์ TLS ที่ได้รับหน้าแสดงข้อผิดพลาด HTTP หรือข้อความธรรมดาอื่นอาจรายงานข้อผิดพลาดโปรโตคอล ถ้อยคำนั้นไม่ได้ยืนยันว่าเว็บไซต์รองรับ TLS เวอร์ชันใด หรือแม้แต่ได้ติดต่อเว็บไซต์แล้วหรือไม่
- บันทึก URL ของพร็อกซีรวมถึงสคีมา และโปรโตคอลที่เอกสารระบุของปลายทาง
- ค้นหาว่าความล้มเหลวเกิดก่อนคำตอบ CONNECT ระหว่าง TLS ของปลายทาง หรือระหว่างการตรวจสอบใบรับรองของพร็อกซีเอง
- ตรวจสอบเวอร์ชันจริงของไคลเอนต์และส่วนที่พึ่งพาเมื่อเทียบกับวิธีแก้แบบเก่า การนำพร็อกซีไปใช้ในอดีตบางครั้งจัดการสคีมาแตกต่างออกไป
การแก้ไขหลายอย่างอาจผิดด้วยเหตุผลต่างกัน รายการพร็อกซี HTTP เสนอผู้สมัครปลายทาง HTTP ธรรมดาสำหรับคำขอสาธารณะที่ได้รับอนุญาตผ่านเส้นทางเช่นนี้ ปลายทาง HTTP ธรรมดาต้องใช้สคีมาพร็อกซี HTTP ส่วนปลายทางที่เปิด TLS จริงควรคง HTTPS และการตรวจสอบใบรับรองไว้ พร็อกซีที่ปฏิเสธ CONNECT ต้องการบริการหรือนโยบายที่รองรับ ไม่ใช่การลดเวอร์ชันไลบรารีตามอำเภอใจ
เก็บความล้มเหลวแรกที่สังเกตได้ไว้ การปิดการตรวจสอบใบรับรองไม่สามารถทำให้ตัวรับที่พูดได้แค่ HTTP พูด TLS และการเลือกนโยบายรหัสลับเก่าก็ไม่อธิบายการปฏิเสธ HTTP ที่ส่งก่อนแฮนด์เชกของเว็บไซต์ได้