Hoe u HTTPS als eerste verzoek kunt indienen via een VPN
Alleen HTTPS-modus, echte HTTPS-bladwijzers en HSTS zijn drie verschillende oplossingen. Doorloop ze op volgorde, zodat het eerste verzoek wordt gecodeerd en niet wordt omgeleid.
Een browser die eerst http:// typt en op https:// terechtkomt nadat een omleiding al één verzoek duidelijk heeft verzonden, en een VPN verandert daar niets aan. De tunnel beschermt het been van de cliënt tot aan het uitgangsknooppunt; het codeert niets boven de transportlaag, dus een waarnemer tussen de uitgang en de oorsprong ziet de platte tekst nog steeds springen. HTTPS als eerste verzoek maken is een wijziging aan de clientzijde die uit drie delen bestaat: een echt HTTPS-adres, de upgrademodus van de browser en het eigen beleid van de site. De onderstaande stappen zijn de volgorde die ik gebruik, elk met de controle die aangeeft of het duurde.
Stap 1: bevestig wat het eerste verzoek daadwerkelijk is
Kijk, voordat u iets wijzigt, naar wat de browser verzendt. Open het netwerkpaneel met de pagina opnieuw geladen vanuit een koude cache en lees de eerste rij: als het schema http is en de status 301 of 308 is, is alles na die rij een tweede verzoek. curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.com reproduceert dezelfde reeks buiten de browser en drukt de URL af waarop u terecht bent gekomen.
Er zijn twee uitkomsten mogelijk en deze hebben verschillende oplossingen nodig. Als de site HTTPS op dezelfde host aanbiedt, is de oplossing om te stoppen met het publiceren van het HTTP-formulier: update de bladwijzer, de wikilink, de snelkoppeling op het bureaublad en de e-mailsjabloon waarop mensen klikken. Als de site helemaal geen HTTPS ondersteunt, zal geen enkele browserinstelling dit aanmaken, en het eerlijke antwoord is dat de bestemming het probleem is. Ga niet voorbij aan het tweede geval met een uitzondering, omdat een certificaatuitzondering op een accountpagina een transportprobleem omzet in een inlogprobleem. Schrijf op in welk geval u zich bevindt voordat u een instelling aanraakt.
Stap 2: schakel de HTTPS-only-modus van de browser in
De upgrademodus is het tweede deel en de modi zijn niet uitwisselbaar. Controleer wat de jouwe doet voordat je het inschakelt: upgrade stil, upgrade met een waarschuwing of weiger te laden.
In Firefox bevinden de bedieningselementen zich achter about:config en op de pagina met privacy-instellingen, met dom.security.https_only_mode als switch en uitzonderingen per site die worden beheerd via het hangslotmenu. In Chrome en Edge staat hetzelfde idee onder Instellingen, Privacy en beveiliging, Beveiliging, met het label Altijd beveiligde verbindingen gebruiken. Wat het label ook is, verifieer het gedrag tegen een host die alleen antwoordt op poort 80, omdat een modus die upgradet en vervolgens stilletjes terugvalt, niet de bescherming is die u denkt te hebben ingeschakeld. De Firefox HTTPS-Only-documentatie beschrijft het upgrade-, waarschuwings- en uitzonderingsgedrag voor die browser.
Stap 3: repareer de bronnen, niet alleen de adresbalk
Als een upgrade mislukt, lees dan de exacte fout in plaats van de adresbalk. Een host zonder HTTPS-listener, een hostnaam die niet overeenkomt met het certificaat en een verlopen keten produceren verschillende berichten en behoren tot verschillende eigenaren. Alleen de eerste is een gat aan de serverzijde; de tweede is meestal een bladwijzer die nooit is bijgewerkt; de derde is een verlengingsprobleem waarvoor de VPN-verbinding niet relevant is.
Voeg geen certificaatuitzondering toe aan een accountsite omdat de VPN is ingeschakeld. De uitzondering schakelt de controle uit die precies de onderschepping zou hebben gedetecteerd die een VPN moet voorkomen.
Het derde deel bevindt zich op de pagina en is het deel dat mensen missen. Een pagina die via HTTPS wordt geladen, kan nog steeds afbeeldingen, lettertypen of scripts van een http-URL halen, en de browser zal deze blokkeren of de beveiligingsindicator voor de hele pagina downgraden. Inspecteer de mislukte verzoeken in het netwerkpaneel en corrigeer de bronreferenties bij hun eigenaar in plaats van aan te nemen dat de adresbalk elk verzoek beschrijft. Op een site die u gebruikt, betekent dit dat u de opgeslagen URL's in het CMS of de sjabloon moet corrigeren in plaats van ze in de browser te herschrijven. Als u de bron niet kunt wijzigen, noteer dan de gemengde inhoud als een bekende leemte, omdat een hangslot boven een pagina die leesbare tekstbronnen ophaalt een vals signaal is.
Stap 4: wat HSTS toevoegt, en wat niet
HSTS is eerder een sitebeleid dan een browservoorkeur, en het is het enige mechanisme hier dat een getypte http:// op een nieuw profiel overleeft. Zodra een browser een Strict-Transport-Security header voor een host heeft gezien, herschrijft hij latere verzoeken naar https voordat deze worden verzonden, wat precies de gewenste eigenschap is. Het doet niets voor een host die de browser nog nooit heeft bezocht, en niets voor een andere hostnaam die dezelfde applicatie bedient.
Controleer wat de oorsprong verzendt met curl -sSI https://example.com | grep -i strict-transport-security. Een ontbrekende header is een serverwijziging en niet iets dat een client kan installeren. Als deze aanwezig is, lees dan max-age en of includeSubDomains is ingesteld, omdat er een korte maximale leeftijd verstrijkt tussen bezoeken en een ontbrekende includeSubDomains elk subdomein onbeschermd laat. RFC 6797 definieert hoe een user-agent het beleid toepast en wat deze mag negeren. Vooraf laden is een afzonderlijke verplichting, dus controleer de status via de hstspreload.org API voordat u iemand belooft dat een domein op de lijst staat.
Verificatie en terugdraaien
Terugdraaien is goedkoop voor de clientinstellingen en duur voor HSTS. Als u de HTTPS-only-modus uitschakelt, wordt het eerdere gedrag onmiddellijk hersteld; een lange maximale leeftijd geldt niet, en bezoekers die deze al hebben ontvangen, blijven upgraden totdat deze verloopt.
Verifieer dus eerst voordat u het klaar noemt. Herlaad vanuit een koude cache en bevestig dat het eerste verzoek in het netwerkpaneel https is zonder voorafgaande omleiding. Controleer vervolgens een subdomein, want includeSubDomains is waar dit beleid meestal beperkter blijkt te zijn dan aangenomen. Controleer vervolgens een pagina die assets van derden ophaalt, aangezien gemengde inhoud de mislukking is die elke andere oplossing overleeft.
Als het eerste verzoek daarna nog steeds http is, is de client niet langer de variabele: de link waarop mensen klikken. Zoek op de plaatsen die u beheert naar de http-vorm van de hostnaam, update deze en test opnieuw met hetzelfde koude-cache-herladen. Houd de VPN-vraag overal gescheiden, omdat de tunnel verandert wie het verzoek kan zien en nooit verandert of het verzoek gecodeerd is. De regel die in het ticket moet worden gezet, is dat het eerste verzoek het belangrijkste is, en dat een omleiding slechts een ontvangstbewijs is voor een reeds verzonden verzoek.