แคชหลัง VPN: HTTPS ยังซ่อนอะไรจากคุณ
พร็อกซี่ที่ทางออกของ VPN ยังอ่าน HTTPS แบบต้นทางถึงปลายทางไม่ได้ เลือกงานที่แคชได้และขอบเขต TLS ที่ตั้งใจไว้ก่อนเพิ่มเซิร์ฟเวอร์อีกเครื่อง
แคชข้างเซิร์ฟเวอร์ VPN ฟังดูเหมือนแบนด์วิดท์ฟรีสำหรับทุกคนหลังอุโมงค์ แต่ไม่ใช่ เพราะไบต์ที่ผ่านจุดนั้นยังคงได้รับการปกป้องด้วยเซสชัน TLS ที่ปลายทั้งสองคือเบราว์เซอร์และเว็บไซต์ เกตเวย์ VPN เพียงถอดการเข้ารหัสชั้นนอกของตัวเอง ไม่ใช่ของแอปพลิเคชัน ตัดสินใจว่าจะใช้ซ้ำวัตถุใดก่อนเพิ่มฮาร์ดแวร์
เซสชัน TLS เป็นของเบราว์เซอร์
ใน HTTPS ปกติ เบราว์เซอร์เจรจาคีย์กับเว็บไซต์ และทุกเรกคอร์ดหลังการจับมือถูกเข้ารหัสสำหรับคู่นั้น เกตเวย์ VPN ถอดรหัสอุโมงค์ที่มันสร้างขึ้นแล้วส่งต่อเรกคอร์ด TLS ที่ทึบแสง มันเห็นปลายทาง เวลา และปริมาณ แต่ไม่เห็นบรรทัดคำขอหรือเนื้อความตอบกลับ นั่นคือขอบเขตที่แคชใดก็ต้องอยู่ด้วย
การออกแบบใดที่ทำลายขอบเขตนี้คือการออกแบบดักจับ TLS พร้อมผลที่ตามมาของตัวเองในเรื่องความเชื่อถือใบรับรองและการจัดการอุปกรณ์
CONNECT คืออุโมงค์ ไม่ใช่แคช
พร็อกซี่ส่งต่อแบบชัดเจนมักได้รับคำขอ HTTP CONNECT แล้วจึงส่งต่อไบต์ทั้งสองทิศทาง คำสำคัญคือการส่งต่อ พร็อกซี่ไม่ได้วิเคราะห์บทสนทนาที่เข้ารหัส
curl -sSI -x http://proxy.example:3128 https://example.com/ส่วนหัวตอบกลับมาจากการจัดการอุโมงค์ของพร็อกซี่ ไม่ใช่จากสำเนาหน้าที่แคชไว้ CONNECT ที่สำเร็จหมายถึงเส้นทางใช้งานได้ ไม่ได้หมายความว่ามีอะไรถูกเก็บไว้ใช้ซ้ำ การชี้พอร์ต 443 ไปที่แคช ก็ไม่ได้สอนให้มันพูด TLS เพราะแคชต้องใช้ข้อความที่อ่านได้ การตั้งค่าคไคลเอนต์ต้องใช้การตั้งค่าพร็อกซี่แบบชัดเจนที่รองรับ ไม่ใช่การเปลี่ยนเส้นทางที่ไม่อธิบาย
แคชสิ่งที่คุณดูแล ไม่ใช่สิ่งที่คุณท่อง
เมื่อเนื้อหาเป็นของคุณ พร็อกซี่ย้อนกลับสามารถสิ้นสุด TLS และเก็บการตอบกลับที่อนุมัติไว้อย่างตั้งใจ เมื่อเป็นของที่เก็บแพ็กเกจ ให้ใช้มิเรอร์ที่โปรเจกต์รองรับ
nginx -T | grep -n "proxy_cache"
curl -sSI https://mirror.example/pkg/index.json | grep -i -E "cache-control|age"คำสั่งแรกแสดงว่าโซนแคชถูกกำหนดค่าไว้หรือไม่และใช้ที่ไหน ส่วนคำสั่งที่สองแสดงคำสั่งแคชของต้นทางสำหรับวัตถุหนึ่งชิ้น แคชที่ใช้ร่วมกันต้องเคารพความสด การควบคุมแคช และคุณลักษณะคำขอที่ทำให้ตัวแทนต่างกัน private และ no-store มีความหมายต่างกัน และไม่ควรถอดออกทั้งคู่เพื่อเพิ่มอัตราการเข้าถึง กฎแคชของ HTTP ยังจำกัดการเก็บการตอบกลับสำหรับคำขอที่ผ่านการยืนยันตัวตน และนั่นคือจุดที่หน้าเฉพาะบุคคลกลายเป็นการเปิดเผยข้อมูล จำกัดพร็อกซี่ไว้กับไคลเอนต์ที่อนุมัติแทนการเปิดรีเลย์แบบเปิด
วัดการเข้าถึง ไม่ใช่นาฬิกาจับเวลา
คำขอที่สองที่เร็วกว่าไม่ได้พิสูจน์ว่าแคชใหม่ทำอะไร เพราะเบราว์เซอร์และระบบปฏิบัติการแคชอย่างก้าวร้าวด้วยตัวเอง ขอตัวนับการเข้าถึงและการพลาดจากพร็อกซี่และดูทราฟฟิกต้นทางระหว่างการทำซ้ำแบบควบคุม ใช้การดาวน์โหลดซ้ำหนึ่งครั้งของวัตถุที่รู้จัก โดยเปิดแคชก่อนแล้วข้ามไป และเปรียบเทียบไบต์ที่ต้นทางให้บริการแทนเวลาที่ผ่านไป จากนั้นตรวจสอบขอบเขตการอนุญาต ทรัพยากรที่ต้องเข้าสู่ระบบต้องไม่ถูกให้บริการแก่ไคลเอนต์อื่น
บันทึกงาน คีย์แคช และนโยบายที่อนุญาตให้ใช้ซ้ำ แคชคือการตัดสินใจแบ่งปันข้อมูลที่สวมชุดเพิ่มประสิทธิภาพ