التخزين المؤقت خلف 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 تخزين الاستجابات للطلبات الموثقة، وهنا بالضبط تتحول الصفحة المخصصة إلى كشف للبيانات. أبقِ الوكيل مقصوراً على عملاء معتمدين بدلاً من كشف ممر مفتوح.
قِس الإصابة، لا ساعة الإيقاف
الطلب الثاني الأسرع لا يثبت أن الذاكرة الجديدة فعلت شيئاً، لأن المتصفحات وأنظمة التشغيل تخزن بقوة من تلقاء نفسها. اطلب من الوكيل عدادات الإصابة والإخفاق وراقب حركة الأصل أثناء تكرار مضبوط. استخدم تنزيلاً واحداً متكرراً لكائن معروف، مع تمكين الذاكرة ثم تجاوزها، وقارن بايتات الأصل المُقدمة بدلاً من الوقت المنقضي. ثم افحص حد التفويض: المورد الذي يتطلب تسجيل دخول يجب ألا يُقدَّم لعميل آخر.
سجّل الحمل ومفتاح الذاكرة والسياسة التي أذنت بإعادة الاستخدام. التخزين المؤقت قرار مشاركة بيانات يرتدي زياً تحسينياً.