Kodėl HTTPS yra svarbus ir kaip jį patikrinti teisingai
HTTPS tikrintuvas ir validatorius (HTTPS Checker Validator) yra sukurtas klausimui, kuris skamba apgaulingai smulkiai, kol nesugriauna vartotojų pasitikėjimo, paieškos sistemų (Google) matomumo, formų veikimo, autorizacijos sesijų, naršyklės saugumo įspėjimų ir bendro svetainės orumo. Įvedate domeną arba URL adresą, o tikrintuvas akimirksniu patikrina, ar serveris atsako per HTTPS, ar senoji HTTP versija švariai nukreipia (redirect) į saugiąją versiją, ar SSL/TLS sertifikatas yra galiojantis ir patikimas, bei ar serveris siunčia HSTS apsauginę antraštę. Paprasta žmonių kalba tariant: šis įrankis patikrina, ar svetainė iš tiesų teisingai naudoja saugų šifruotą transportą, ar tiesiog pasipuošė saugumo atributais, fone palikdama praviras tarnybines duris.
Tai yra nepaprastai svarbu, nes svetainė netampa automatiškai „saugi“ vien todėl, kad administratorius prieš kelerius metus įdiegė sertifikatą ir ramia sąžine nuėjo gerti kavos. Tikroji HTTPS higiena susideda iš kelių suderintų sluoksnių. Svetainė privalo tiesiogiai ir be klaidų atsakyti per HTTPS. Senoji HTTP versija neturi klaidžioti po internetą kaip pamirštas tarnybinis įėjimas – ji privalo nukreipti lankytoją 301 kodu. Sertifikatas privalo tiksliai atitikti domeno vardą, kurį lanko vartotojas. Naršyklė neturi būti verčiama dvejoti dėl svetainės tapatybės. O HSTS antraštė, kai naudojama teisingai, liepia naršyklei apskritai pamiršti nesaugią versiją. Žmonės dažnai elgiasi taip, lyg žalia spynelė adreso juostoje būtų visos istorijos pabaiga. Iš tikrųjų tai tėra įžanginis skyrius.
HTTP ir HTTPS: atskiriant raides nuo mitologijos
Norint suprasti, kodėl HTTPS yra toks fundamentalus, pravartu išsklaidyti akronimus. HTTP reiškia Hypertext Transfer Protocol (Hiperteksto perdavimo protokolas). Tai klasikinis protokolas, sukurtas informacijos mainams tarp žiniatinklio naršyklės ir serverio. Sąvoka hipertekstas kilo iš senos idėjos apie susietą tekstą, kuris per nuorodas gali šokinėti iš vieno dokumento į kitą, užuot elgęsis kaip nuobodus linijinis popieriaus lapas. Tai buvo viena pamatinių saityno (World Wide Web) idėjų – elegantiška, naudinga, pakeitusi pasaulį. Tačiau pagal nutylėjimą – visiškai nešifruota. HTTPS yra tiesiog tas pats HTTP, perduodamas per saugų, šifruotą transporto sluoksnį. Naršyklė ir serveris vis dar kalbasi įprasta interneto kalba, tačiau dabar jie tai daro uždarame, autentifikuotame ir kriptografiškai apsaugotame kanale, o ne šaukdami per atvirą koridorių, kuriame kiekvienas praeivis gali viską girdėti.
Šis saugumo sluoksnis atsirado ne todėl, kad inžinieriams pritrūko madingų raidžių. Jis atsirado todėl, kad atviras internetas pasirodė esąs itin priešiška terpė naiviam pasitikėjimui. Ankstyvasis interneto srautas, perduodamas per paprastą HTTP, galėjo būti laisvai skaitomas, perimamas arba klastojamas bet kurio tarpinio tinklo mazgo, turinčio prieigą prie ryšio linijos (maršrutizatorių, ryšio tiekėjų, viešų „Wi-Fi“ stotelių ar piktavalių įsilaužėlių). Slaptažodžiai, sesijų slapukai (cookies), asmeniniai duomenys, mokėjimų rekvizitai, paieškos užklausos ir administravimo skydeliai tampa tiesiogine katastrofa, kai juda viešuoju tinklu atviru tekstu. HTTPS atsirado todėl, kad prašymas „prašau nežiūrėti į mano duomenis“ niekada nebuvo patikima saugumo strategija.
Nuo SSL iki TLS: istorinė evoliucija ir kalbos inercija
Istorinis kelias į modernų HTTPS driekiasi per SSL ir vėliau TLS protokolus. Esama tam tikro sauso komiškumo tame, kiek daug žmonių iki šiol naudoja frazę „SSL sertifikatas“, nors pats SSL protokolas jau seniai yra techniškai miręs ir palaidotas. SSL (Secure Sockets Layer) buvo sukurtas kompanijos „Netscape“ praėjusio amžiaus dešimtajame dešimtmetyje kaip pirmasis bandymas apsaugoti srautą tarp naršyklės ir serverio. SSL 2.0 ir SSL 3.0 buvo svarbūs istoriniai etapai ta pačia prasme, kaip mediniai tiltai yra svarbūs kelių istorijai: jie padėjo persikelti per upę, tačiau šiandien niekas nebenori jais važiuoti sunkiasvoriu transportu dėl gausybės saugumo spragų (pvz., POODLE atakos).
Tobulėjant kriptografijai, ekosistema perėjo prie TLS (Transport Layer Security), kuris tapo tikruoju ir vieninteliu šiuolaikiniu standartu (šiandien naudojamos TLS 1.2 ir TLS 1.3 versijos). Todėl kai kas nors šiandien sako „SSL sertifikatas“, praktikoje jie turi omenyje skaitmeninį sertifikatą, naudojamą moderniame TLS protokole. Ši frazė išliko tik todėl, kad kasdienė žmonių kalba yra gerokai tingesnė už kintančią techninę infrastruktūrą.
Pats TLS protokolas yra viena iš tų nematomų civilizacinių technologijų, kurias priimame kaip savaime suprantamą dalyką, kol viskas veikia sklandžiai. Naršyklė prisijungia prie serverio, serveris pateikia skaitmeninį sertifikatą, atliekamas asimetrinis kriptografinis pasisveikinimas (handshake), sugeneruojami simetriniai šifravimo raktai, ir jei viskas tvarkinga – puslapis užsikrauna su ramia spynelės piktograma, o ne su gąsdinančiu raudonu naršyklės įspėjimu, parašytu nusivylusio tėvo tonu.
Slaptumas prieš vientisumą: kodėl net paprastoms svetainėms būtinas HTTPS
Vienas dažniausių ir labiausiai klaidinančių mitų skamba taip: „Mano svetainė yra tik paprastas informacinis vizitinis puslapis, aš nerenku slaptažodžių ar mokėjimų, kam man tas HTTPS?“ Šis argumentas priklauso tam pačiam muziejaus skyriui, kaip ir teiginys: „Kam man rakinti buto duris, jei prieškambaryje nelaikau deimantų?“
HTTPS saugo ne tik duomenų slaptumą (secrecy), bet ir jų vientisumą (integrity). Paprastas HTTP puslapis kelionės metu gali būti laisvai modifikuotas tarpinių tinklo mazgų. Piktavališki interneto tiekėjai ar nesaugūs maršrutizatoriai gali įterpti savo reklamas, pakeisti nuorodas, įšvirkšti kenkėjiškus „JavaScript“ skriptus, nukreipti lankytoją į fiktyvius puslapius arba pakeisti tekstą. Šifruotas HTTPS kanalas garantuoja, kad lankytojas mato tiksliai tą turinį, kurį išsiuntė serveris, be jokių tarpinių manipuliacijų.
Paieškos sistemų spaudimas ir sertifikatų automatizavimo revoliucija
Paieškos sistemos, ypač „Google“, suvaidino didžiulį vaidmenį priverčiant interneto savininkus pereiti prie saugaus ryšio. „Google“ paskelbė HTTPS oficialiu reitingavimo signalu, o naršyklės (pradedant „Chrome“) ėmė aktyviai žymėti HTTP svetaines su įvesties laukais kaip „Not Secure“ (Nesaugu). Tai akimirksniu pakeitė žaidimo taisykles: saugumas nustojo būti tik bankų privilegija ir tapo bazine viešosios interneto erdvės higiena.
Vėliau įvyko dar viena revoliucija: atsirado „Let's Encrypt“ ir automatizuotas ACME protokolas. Anksčiau SSL sertifikato gavimas buvo brangus, biurokratiškas ir lėtas procesas. „Let's Encrypt“ padarė sertifikatus nemokamus, o jų diegimą ir atnaujinimą – visiškai automatinį. Šiandien, kai sertifikatus galima gauti nemokamai per kelias sekundes, nesaugi HTTP svetainė yra ne finansinių resursų stoka, o tiesiog aplaidumas.
Kodėl svarbus teisingas HTTP į HTTPS nukreipimas ir HSTS
Daugelis svetainių kenčia nuo vadinamojo „dvigubo gyvenimo“ (split-brain) sindromo: HTTPS veikia, tačiau sena HTTP versija vis dar tiesiogiai priima lankytojus, užuot nukreipusi juos į saugų adresą. Tai sukelia rimtų problemų:
- Turinio dubliavimas (Duplicate Content): Paieškos robotai mato dvi identiškas svetainės versijas, o tai kenkia SEO reitingams.
- Saugumo spragos: Lankytojai, paspaudę senas HTTP nuorodas, lieka neapsaugoti.
- Peradresavimų grandinės: Netvarkingi kelių žingsnių nukreipimai lėtina krovimąsi.
Čia į pagalbą ateina HSTS (HTTP Strict Transport Security) antraštė. Ji nurodo naršyklei (pvz., Strict-Transport-Security: max-age=31536000; includeSubDomains; preload), kad ateinančius metus į šią svetainę galima jungtis TIK per HTTPS. Net jei vartotojas rankiniu būdu adreso juostoje surenka http://, naršyklė pati automatiškai pakeičia protokolą į https:// dar prieš išsiųsdama užklausą į tinklą. Tai visiškai panaikina ryšio pažeminimo (SSL stripping) atakų riziką.
Ar pakanka vien tik galiojančio sertifikato?
Kai kurie administratoriai mano, kad jei sertifikatas galioja, reikalas baigtas. Tai klaida. Galiojantis sertifikatas įrodo tik domeno kontrolę. Norint užtikrinti nepriekaištingą veikimą, būtina patikrinti:
- Ar visi puslapio resursai (paveikslėliai, skriptai, stiliai) kraunami per HTTPS (išvengiant Mixed Content klaidų).
- Ar HTTP versija nukreipia su 301 Permanent Redirect kodu.
- Ar sertifikatas atitinka tiek pagrindinį domeną, tiek
wwwsubdomeną. - Ar sertifikatas nebaigia galioti artimiausiomis dienomis.
- Ar sukonfigūruota HSTS antraštė.
Šis HTTPS tikrintuvas atlieka visus šiuos testus per vieną sekundę ir pateikia aiškią ataskaitą, leidžiančią ištaisyti klaidas anksčiau, nei jas pastebės jūsų lankytojai ar paieškos robotai.