Certifikatë VPN e vetë-nënshkruar: çfarë do të thotë dhe çfarë i beson
Një certifikatë VPN e vetë-nënshkruar vazhdon të kriptojë trafikun. Ajo që ndryshon është kujt i thatë ta besojë, cili depo merr atë besim dhe cilat kontrolle mbeten.
Këtu dëmin më të madh e bëjnë dy bindje: se një certifikatë VPN e vetë-nënshkruar do të thotë që tuneli nuk është i kriptuar, dhe se instalimi i çdo gjëje që kërkoi klienti VPN prek vetëm VPN-në. Asnjëra nuk i mbijeton kontaktit me një vendosje reale. Një certifikatë e vetë-nënshkruar përshkruan një marrëdhënie nënshkrimi, jo një verdikt sigurie, dhe shtrirja e besimit që shtoni varet nga cila depo ku ajo përfundon. Kam parë një helpdesk duke importuar një rrënjë ofruesi në një makinë Windows për të heshtur një paralajmërim, pastaj duke kaluar një pasdite duke shpjeguar pse shfletuesi ndaloi së ankuari për një portal të palidhur. Të dyja gjysmat e kësaj pyetjeje shkojnë bashkë, prandaj trajtojini si një.
Një certifikatë nuk është depo besimi
Skedari që paraqet serveri mban një çelës publik, një emër subjekti, një emër lëshuesi, data vlefshmërie dhe zgjerime. Vetë-nënshkruar do të thotë që subjekti dhe lëshuesi janë i njëjti entitet dhe nënshkrimi verifikohet me çelësin e vetë certifikatës. Asgjë në atë përkufizim nuk thotë se lidhja është e dobët, dhe asgjë nuk thotë se klienti do ta pranojë.
Pranimi vjen nga diku tjetër: një skedar CA drejt të cilit drejtoni klientin, një gjurmë gishti që krahasoni me dorë, ose një rrënjë që tashmë qëndron në një depo që klienti lexon. Një vendosje mund të jetë plotësisht e shëndoshë ndërsa certifikata e saj do të dështonte në çdo test publik. openssl verify kundër paketës së sistemit do të raportojë një lëshues të panjohur, dhe ai raport është i saktë, jo defekt.
Opsioni ca i OpenVPN është rasti më i qartë i besimit të kufizuar në aplikacion. Ai skedar emërton ankorat që klienti do të pranojë, dhe mund të përmbajë një CA private ose, në një vendosje të vogël, certifikatën e vetë-nënshkruar të vetë serverit. Versioni 2.6 pranon gjithashtu --peer-fingerprint për të fiksuar një gjurmë gishti SHA-256 në vend të shpërndarjes së një skedari CA. WireGuard qëndron edhe më larg: nuk ka fare certifikata, vetëm një çelës publik statik për çdo partner, kështu që pyetja e vetë-nënshkrimit nuk zbatohet për të.
Ku e instaloni besimin përcakton kush e trashëgon atë
Vendosni të njëjtën certifikatë në tre vende dhe merrni tre rreze të ndryshme shpërthimi. Një paketë që lexohet vetëm nga klienti VPN prek atë klient. Një rrënjë në depon e sistemit operativ prek çdo program që konsulton atë depo. Një shfletues me bazën e vet të dhënave të besimit mund t'i injorojë të dyja, dhe për këtë arsye një paralajmërim mund t'i mbijetojë një importi që dukej se funksiononte.
Në Debian ose Ubuntu, hedhja e një skedari në /usr/local/share/ca-certificates/ dhe ekzekutimi i update-ca-certificates ndryshon paketën në të gjithë sistemin. Në Windows, certutil -addstore -f Root shkruan në depon e makinës dhe kërkon një prompt të ngritur, ndërsa shtimi i -user synon depon e përdoruesit aktual; të dyja nuk janë të këmbyeshme. Firefox mban bazën e vet NSS, kështu që një import në nivel OS mund të mos shfaqet kurrë atje.
Shtrirja ka rëndësi për shkak të asaj që mund të bëjë një autoritet. Një CA lëshuese mund të nënshkruajë për emra me të cilët nuk ka asnjë lidhje, kështu që çdo gjë që i beson asaj depo do t'i pranojë ato nënshkrime. Një fletë e vetme e fiksuar nuk mund ta bëjë këtë; ajo vërteton saktësisht një identitet partneri. Nëse qëllimi është të lidhet një VPN, një CA e kufizuar në aplikacion ose një fletë e fiksuar e arrijnë atë, ndërsa një rrënjë në të gjithë makinën është një lëshim shumë më i madh sesa kërkon simptoma.
Ju po kriptoni ende pa një CA publike
Dora e ngushtë TLS nxjerr çelësat e sesionit pavarësisht nëse certifikata e partnerit zinxhirohet në diçka që ju besoni tashmë. Vetë-nënshkruar nuk do të thotë tekst i thjeshtë, dhe nuk do të thotë që trafiku është i lexueshëm në fluturim. Do të thotë që klienti nuk ka asnjë arsye a priori për të besuar se çelësi i përket serverit që kërkoi.
Në atë boshllëk jetojnë sulmet e vërteta. Një klient i konfiguruar të pranojë çdo certifikatë, qoftë përmes një cilësimi verifikimi të çaktivizuar, qoftë përmes një butoni beso-gjithsesi të klikuar një herë dhe të harruar, do të kriptojë me gëzim kujtdo që përgjigjet. Përgjimi ndodh në hapin e vërtetimit, përpara se të lëvizin të dhënat e aplikacionit. Kriptimi pa kontroll identiteti mban një vëzhgues pasiv jashtë dhe bën pak gjë tjetër.
Besimi tek lëshuesi nuk e anashkalon kontrollin e emrit
Vërtetimi i zinxhirit, përputhja e emrit dhe qëllimi i certifikatës janë vendime të ndara. Një zinxhir mund të jetë i vlefshëm ndërsa emri është i gabuar, dhe një emër mund të përputhet ndërsa certifikata është lëshuar për një rol tjetër. RFC 5280 përcakton fushat që mbajnë këto kufizime, dhe sa rreptësisht i zbaton një klient është çështje e secilit aplikacion.
OpenVPN e bën ndarjen të dukshme. verify-x509-name fikson subjektin e pritur përmes përputhjes së name, name-prefix ose subject. remote-cert-tls server kërkon që certifikata e partnerit të jetë e përdorshme si certifikatë serveri, gjë që refuzon një certifikatë vetëm-klient edhe kur lëshuesi është i besuar. Asnjëra nga cilësimet nuk zëvendësohet duke dërguar një skedar CA.
Inspektoni certifikatën përpara se të vendosni ndonjë gjë:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNametregon kush e lëshoi, për cilat emra dhe deri kur.openssl verify -CAfile ca.crt server.crtkontrollon nëse zinxhiri që planifikoni të dërgoni vërteton vërtet fletën.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errorfunksionon për pikat fundore TLS si një portal web; protokolli OpenVPN në 1194 nuk është një rrjedhë TLS e thjeshtë, kështu që ai test nuk zbatohet atje.
Një certifikatë me datë të skaduar, pa subjectAltName për emrin me të cilin lidheni, ose pa përdorimin serverAuth dështon pavarësisht sa me kujdes është instaluar ankora.
Pesë kontrolle përpara se të pranoni një
Krahasoni gjurmën e gishtit përmes një kanali që nuk është lidhja që po përpiqeni të riparoni: një konsolë, një instalues që e keni tashmë, një skedar konfigurimi i nënshkruar. openssl x509 -in server.crt -noout -fingerprint -sha256 në server dhe e njëjta vlerë në regjistrin e klientit mjaftojnë për të ditur se po shikoni një objekt të vetëm.
Më pas, vendosni çfarë po instaloni: një fletë, ose një autoritet që mund të presë më shumë. Pastaj vendosni ku shkon, dhe emërtoni aplikacionet që lexojnë atë depo. Shkruani rrugën e heqjes ndërsa ju kujtohet ende, sepse beso-dhe-vazhdo është mënyra se si një import i përkohshëm bëhet i përhershëm.
Së fundi, planifikoni ndryshimin. Një certifikatë ose gjurmë gishti e fiksuar duhet të përditësohet përmes të njëjtit kanal të besuar kur certifikata rrotullohet, dhe një CA private ka ciklin e vet të jetës së lëshimit dhe revokimit. Nëse çelësi privat rrjedh, ribesimi i një kopjeje të së njëjtës certifikatë nuk riparon asgjë; identiteti duhet të zëvendësohet.
Nëse një paralajmërim i mbijeton të pesë kontrolleve, pyetja e dobishme nuk është cili buton e hesht, por cila depo lexon vërtet klienti dhe nga erdhi ajo rrënjë. Përgjigjuni kësaj, dhe importi që jeni gati të bëni bëhet një vendim në vend të një refleksi.