Çfarë është HSTS dhe si e konfiguroni atë?
HTTPS është shumë i sigurt, por ka një të metë: nuk është i ndezur si parazgjedhje. Një sulmues në mes mund të rrëmbejë lidhjen e një përdoruesi përpara se t'i thuash të përdorin HTTPS. HSTS e zgjidh këtë problem dhe mundëson HTTPS në të gjithë sitin.
Të kesh enkriptim SSL në radhë të parë është një parakusht për HSTS, sepse përndryshe aktivizimi i HSTS thjesht do ta bëjë faqen tuaj të paarritshme. Ju mund të lexoni udhëzuesin tonë për konfigurimin e certifikatave SSL falas me LetsEncrypt për të aktivizuar HTTPS në faqen tuaj të internetit.
Si funksionon HSTS?
HSTS qëndron për HTTP Strict Transport Security dhe rregullon mënyrën se si duhet të lidhet shfletuesi i një përdoruesi me faqen tuaj të internetit.
Ja se si funksionon zakonisht lidhja me faqen tuaj. Një përdorues dëshiron të lidhet me faqen tuaj të internetit dhe kërkon serverin tuaj për t'u lidhur. Serveri juaj bën gjënë përgjegjëse dhe dërgon një përgjigje 301 Moved Permanently në shfletues, duke i thënë se adresa HTTP që ka kërkuar duhet të ridrejtohet në HTTPS. Përdoruesi vazhdon normalisht, duke shfletuar në mënyrë të sigurt.
Sidoqoftë, një sulmues me kontroll mbi lidhjen (siç është rasti me sulmet njeri në mes) mund të bllokojë lehtësisht përgjigjen 301 dhe të marrë kontrollin e seancës së shfletimit të atij përdoruesi. Kjo është një çështje madhore, pasi e mposht qëllimin e kriptimit të faqes në radhë të parë.
Me HSTS të aktivizuar, serveri dërgon të njëjtën përgjigje 301 Moved Permanently, por gjithashtu dërgon një kokë duke thënë: Hej, unë nuk e mbështes HTTP. As mos u përpiqni të bëni më shumë kërkesa HTTP, sepse unë do t'i ridrejtoj të gjitha. Shfletuesi merr mesazhin dhe do të ridrejtohet në HTTPS përpara se të dërgojë ndonjë gjë. Kjo siguron që faqja juaj të jetë plotësisht HTTPS, si parazgjedhje, gjatë gjithë kohës.
Ngarkimi paraprak i HSTS
Megjithatë, HSTS standarde ka një të metë të madhe: lidhja e parë që bën një përdorues është ende e pasigurt. Nëse një përdorues ka përdorur faqen tuaj më parë, shfletuesi do të respektojë kërkesën HSTS në të ardhmen. Por përgjigja fillestare e HSTS është e pasigurt, kështu që nëse një përdorues po shfleton në një kafene dhe hap faqen tuaj për herë të parë (ose, për herë të parë në një pajisje celulare), lidhja e tij mund të rrëmbehet ende.
Ngarkimi paraprak i HSTS është një iniciativë nga projekti Chromium për të zgjidhur këtë problem. Projekti Chromium mban një listë të faqeve të internetit që janë të aktivizuara HSTS gjatë gjithë kohës. Kjo listë është e integruar në shumicën e shfletuesve kryesorë dhe shfletuesi e kontrollon atë përpara se të bëjë kërkesa në sajte të reja.
Nëse jeni në listë, edhe nëse një përdorues nuk ka ndërvepruar kurrë më parë me faqen tuaj, përdoruesi do të veprojë sikur të ketë parë tashmë titullin tuaj HSTS dhe të mos komunikojë kurrë me HTTP. Kjo e bën lidhjen plotësisht të sigurt që nga fillimi.
Aktivizimi i HSTS dhe bashkimi me listën e parangarkimit
HSTS mund të aktivizohet me një titull të thjeshtë, i cili shtohet në të gjitha përgjigjet që dërgon serveri juaj:
Strict-Transport-Security: max-age=300; includeSubDomains; preload
Ju mund ta përfshini këtë në skedarin e konfigurimit të serverit tuaj të internetit. Për shembull, në Nginx, mund të vendosni kokën duke përfshirë një linjë add_header
në bllokun e serverit tuaj:
add_header Strict-Transport-Security 'max-age=300; includeSubDomains; preload; always;'
Dhe për Apache, komanda është e ngjashme, duke përdorur rreshtin Header gjithmonë i vendosur
:
Header always set Strict-Transport-Security "max-age=300; includeSubDomains; preload"
Megjithatë, ka disa hapa të tjerë për të siguruar që gjithçka të funksionojë siç duhet dhe të kualifikoheni për ngarkim paraprak.
Së pari, sigurohuni që po i ridrejtoni të gjitha kërkesat HTTP në HTTPS. Në Nginx, mund ta bëni këtë duke dëgjuar të gjitha kërkesat e portit 80 (HTTP) dhe duke dërguar një kërkesë 301 me URL-në e ndryshuar në ekuivalentin HTTPS:
server {
listen 80;
return 301 https://$host$request_uri;
}
Për t'u kualifikuar për ngarkim paraprak, duhet gjithashtu të siguroheni që të gjitha nëndomenet tuaja janë të mbuluara nën certifikatën tuaj SSL dhe se po i shërbeni ato përmes HTTPS. Ju mund ta bëni këtë me një certifikatë wildcard, të cilën mund ta merrni falas nga LetsEncrypt. Nëse nuk jeni duke ngarkuar paraprakisht, kjo nuk është e nevojshme, por është ende e këshillueshme.
Mund të kontrolloni nëse HSTS po funksionon siç duhet duke ngarkuar faqen tuaj me kokën e aktivizuar, më pas duke shkuar te chrome://net-internals/#hsts
dhe duke futur emrin e faqes tuaj në domenin Query HSTS/PKP ” mjet kërkimi. Nëse faqja juaj shfaq dalje si kjo, HSTS është aktivizuar.
Për më tepër, duhet të kontrolloni nëse titulli strict-transport-security
është i përfshirë në titujt e përgjigjeve të faqes tuaj, gjë që mund ta bëni nga skeda Rrjeti në konsolën e zhvillimit të Chrome:
Pasi t'i keni bërë të gjitha këto, duhet të provoni që gjithçka funksionon dhe se asgjë nuk është prishur kur keni aktivizuar HSTS. Nëse nuk ka probleme, mund të shkoni te faqja e paraqitjes së ngarkimit paraprak, të futni emrin e domenit tuaj dhe të dorëzoni faqen tuaj të internetit.
Probleme me ngarkimin e HSTS dhe HSTS
Me HSTS, faqja juaj tani është e detyruar të përdorë HTTPS për çdo gjë. Kjo përfshin çdo nëndomain, madje edhe mjetet e brendshme. Çdo nëndomain që keni duhet të ketë një certifikatë të vlefshme SSL dhe të jetë i siguruar me HTTPS, ose do të jetë i paarritshëm për kohëzgjatjen e kokës së HSTS (që mund të jetë deri në dy vjet). Nëse keni një certifikatë të shkronjave të egra, mund të zgjidhni disa nga këto çështje, por duhet të bëni testimin përpara se ta aktivizoni për një periudhë të gjatë kohore.
Problemi kryesor me ngarkimin paraprak të HSTS është se ai është shumë i përhershëm. Minimumi mosha maksimale
është një vit dhe pasi faqja juaj të futet në listë, nuk mund të largoheni nga lista pa kaluar një proces të gjatë heqjeje që kërkon që çdo përdorues të kryejë një përditësim të shfletuesit për të aplikuar ndryshimet.
Ju mund të shikoni këtë meta-listë të kërkesave për heqje për të parë se cilat janë problemet kryesore në praktikë. Uber kishte probleme me nëndomenet. Nënfushat e nivelit të tretë dhe të lartë mund të mos mbështeten në certifikatat normale të karaktereve të ngurta. Një uebsajt nga Suedia madje raporton të ardhura dukshëm më të ulëta nga reklamat, pasi reklamuesit lokalë atje nuk i ngarkojnë burimet e tyre mbi HTTPS dhe HSTS bllokon çdo kërkesë HTTP jo të sigurt të bërë ndërsa përdoruesi është i lidhur me faqen tuaj të internetit.
Mënyra më e mirë për të shmangur këto probleme është të hapni HSTS në faza përpara se të bëni kalimin e përhershëm në ngarkim paraprak. Projekti Chromium rekomandon testimin në intervale duke vendosur vlerën max-moshë
fillimisht në pesë minuta për të testuar nëse funksionon:
max-age=300; includeSubDomains
Pastaj për një javë për një test më të gjatë:
max-age=604800; includeSubDomains
Pastaj për një muaj, derisa të jeni të sigurt se nuk ka probleme.:
max-age=2592000; includeSubDomains
Nëse diçka shkon keq dhe cakton një pronë shumë të gjatë max-moshë
, mund të fshish flamurin lokal nga faqja net-internals
e Chrome.
Pasi të jeni i sigurt se asgjë nuk do të shkojë keq nëse keni vetëm HTTPS të aktivizuar gjatë gjithë kohës, mund ta caktoni moshën maksimale
në dy vjet, të shtoni direktivën parangarkimin
dhe të dorëzoni faqen tuaj për ngarkim paraprak.