Cache vedľa servera VPN znie ako bezplatná šírka pásma pre všetkých za tunelom. Nie je, pretože bajty prechádzajúce týmto bodom zostávajú chránené reláciou TLS, ktorej koncami sú prehliadač a web. Brána VPN odstraňuje iba svoje vlastné vonkajšie šifrovanie, nie šifrovanie aplikácie. Skôr než pridáte hardvér, rozhodnite, ktorý opakovaný objekt chcete znova použiť.

Relácia TLS patrí prehliadaču

V bežnom HTTPS prehliadač vyjednáva kľúče s webom a každý záznam po handshake je šifrovaný pre túto dvojicu koncov. Brána VPN dešifruje tunel, ktorý vytvorila, a potom odovzdáva nepriehľadné záznamy TLS. Vidí ciele, časovanie a objem, ale nie riadok požiadavky či telo odpovede. To je hranica, s ktorou musí každá cache žiť.

Každý návrh, ktorý ju narúša, je návrhom zachytávania TLS, s vlastnými dôsledkami pre dôveru v certifikáty a správu zariadení.

CONNECT je tunel, nie cache

Explicitný dopredný proxy zvyčajne dostane požiadavku HTTP CONNECT a potom prenáša bajty oboma smermi. Prenos je kľúčové slovo: proxy neanalyzuje šifrovanú konverzáciu.

curl -sSI -x http://proxy.example:3128 https://example.com/

Hlavičky odpovede pochádzajú zo spracovania tunela proxy, nie z kešovanej kópie stránky. Úspešný CONNECT znamená, že cesta funguje, nie že sa niečo uložilo na opakované použitie. Nasmerovať port 443 na cache ho tiež nenaučí hovoriť TLS, pretože kešovanie vyžaduje čitateľné správy. Konfigurácia klienta musí použiť podporované nastavenie explicitného proxy, nie nevysvetlené presmerovanie.

Kešujte to, čo prevádzkujete, nie to, čo prehliadate

Kde je obsah váš, reverzný proxy môže ukončiť TLS a zámerne ukladať schválené odpovede. Kde patrí úložisku balíčkov, použite zrkadlo, ktoré projekt podporuje.

nginx -T | grep -n "proxy_cache"
curl -sSI https://mirror.example/pkg/index.json | grep -i -E "cache-control|age"

Prvý príkaz ukazuje, či je zóna cache nakonfigurovaná a kde platí, druhý ukazuje vlastné kešovacie direktívy pôvodu pre jeden objekt. Zdieľaná cache musí rešpektovať čerstvosť, kešovacie kontroly a atribúty požiadavky, ktoré rozlišujú reprezentácie; private a no-store znamenajú rôzne veci a ani jedno sa nesmie odstrániť pre zvýšenie miery zásahov. Pravidlá kešovania HTTP tiež obmedzujú ukladanie odpovedí na overené požiadavky, a práve tam sa personalizovaná stránka stáva únikom údajov. Držte proxy obmedzený na schválených klientov, namiesto vystavovania otvoreného relay.

Merajte zásah, nie stopky

Rýchlejšia druhá požiadavka nedokazuje, že nová cache niečo urobila, pretože prehliadače a operačné systémy kešujú agresívne samé. Požiadajte proxy o počítadlá zásahov a minulí a sledujte prevádzku pôvodu pri kontrolovanom opakovaní. Použite jedno opakované stiahnutie známeho objektu, najprv s cache a potom s jej obídením, a porovnajte bajty vydané pôvodom, nie uplynutý čas. Potom skontrolujte hranicu autorizácie: zdroj vyžadujúci prihlásenie nesmie byť obslúžený inému klientovi.

Zaznamenajte záťaž, kľúč cache a zásadu, ktorá opakované použitie povolila. Cache je rozhodnutie o zdieľaní údajov v kostýme optimalizácie.

Súvisiace články