Samopodpísaný certifikát VPN: čo znamená a čomu dôveruje
Samopodpísaný certifikát VPN stále šifruje prevádzku. Mení sa to, komu ste povedali, aby mu dôveroval, ktoré úložisko tú dôveru prijme a ktoré kontroly zostávajú.
Najviac škody tu robia dve presvedčenia: že samopodpísaný certifikát VPN znamená, že tunel nie je šifrovaný, a že inštalácia čohokoľvek, o čo požiadal klient VPN, ovplyvňuje len VPN. Ani jedno neprežije stret so skutočným nasadením. Samopodpísaný certifikát opisuje vzťah podpisu, nie bezpečnostný verdikt, a dosah dôvery, ktorú pridáte, závisí od toho, do ktorého úložiska sa dostane. Videl som helpdesk importovať koreň poskytovateľa do stroja s Windows, aby umlčal jedno varovanie, a potom stráviť popoludnie vysvetľovaním, prečo si prehliadač prestal sťažovať na nesúvisiaci portál. Obe polovice tejto otázky patria k sebe, preto s nimi zaobchádzajte ako s jednou.
Certifikát nie je úložisko dôvery
Súbor, ktorý server predkladá, nesie verejný kľúč, meno subjektu, meno vydavateľa, dátumy platnosti a rozšírenia. Samopodpísaný znamená, že subjekt a vydavateľ sú tá istá entita a podpis sa overuje vlastným kľúčom certifikátu. Nič v tejto definícii nehovorí, že spojenie je slabé, a nič nehovorí, že ho klient prijme.
Prijatie prichádza odinakiaľ: súbor CA, na ktorý klienta nasmerujete, odtlačok, ktorý porovnáte ručne, alebo koreň, ktorý už leží v úložisku, ktoré klient číta. Nasadenie môže byť úplne zdravé, hoci by jeho certifikát zlyhal v každom verejnom teste. openssl verify proti systémovému zväzku nahlási neznámeho vydavateľa, a to hlásenie je správne, nie chyba.
Voľba ca OpenVPN je najjasnejší prípad dôvery obmedzenej na aplikáciu. Tento súbor pomenúva kotvy, ktoré klient prijme, a môže obsahovať jednu súkromnú CA alebo v malom nasadení vlastný samopodpísaný certifikát servera. Verzia 2.6 prijíma aj --peer-fingerprint na pripnutie odtlačku SHA-256 namiesto distribúcie súboru CA. WireGuard stojí ešte ďalej: nemá žiadne certifikáty, len statický verejný kľúč pre každého partnera, takže otázka samopodpisu sa naň nevzťahuje.
Kde dôveru nainštalujete, rozhoduje, kto ju zdedí
Umiestnite ten istý certifikát na tri miesta a získate tri rôzne polomery zásahu. Zväzok, ktorý číta iba klient VPN, ovplyvní tohto klienta. Koreň v úložisku operačného systému ovplyvní každý program, ktorý toto úložisko konzultuje. Prehliadač s vlastnou databázou dôvery môže ignorovať oboje, a preto varovanie môže prežiť import, ktorý vyzeral, že funguje.
V Debiane alebo Ubunte zmena súboru v /usr/local/share/ca-certificates/ a spustenie update-ca-certificates menia systémový zväzok. Vo Windows certutil -addstore -f Root zapisuje do úložiska stroja a vyžaduje zvýšený príkazový riadok, zatiaľ čo pridanie -user cieli na úložisko aktuálneho používateľa; tieto dve nie sú zameniteľné. Firefox si drží vlastnú databázu NSS, takže import na úrovni OS sa tam nemusí nikdy objaviť.
Rozsah je dôležitý kvôli tomu, čo môže autorita urobiť. Vydávajúca CA môže podpisovať mená, s ktorými nemá žiadny vzťah, takže všetko, čo tejto úložisku dôveruje, tieto podpisy prijme. Jediný pripnutý list to nedokáže; autentizuje presne jednu identitu partnera. Ak je cieľom rozbehnúť jedno VPN pripojenie, CA obmedzená na aplikáciu alebo pripnutý list to dosiahnu, zatiaľ čo koreň pre celý stroj je oveľa väčšia koncesia, než vyžaduje príznak.
Stále šifrujete bez verejnej CA
TLS podanie rúk odvodzuje kľúče relácie bez ohľadu na to, či sa certifikát partnera reťazí k niečomu, čomu už dôverujete. Samopodpísaný neznamená otvorený text a neznamená, že prevádzka je za letu čitateľná. Znamená, že klient nemá apriórny dôvod veriť, že kľúč patrí serveru, o ktorý požiadal.
V tejto medzere žijú skutočné útoky. Klient nastavený prijímať akýkoľvek certifikát, či už vypnutým nastavením overovania alebo tlačidlom „predsa dôverovať“ stlačeným raz a zabudnutým, bude ochotne šifrovať komukoľvek, kto odpovie. Zachytenie sa deje v kroku autentizácie, skôr než sa pohnú dáta aplikácie. Šifrovanie bez kontroly identity udrží pasívneho pozorovateľa vonku a robí málo ďalšieho.
Dôvera vo vydavateľa nepreskočí kontrolu mena
Overenie reťazca, zhoda mena a účel certifikátu sú samostatné rozhodnutia. Reťazec môže byť platný, zatiaľ čo meno je nesprávne, a meno môže sedieť, zatiaľ čo certifikát bol vydaný pre inú rolu. RFC 5280 definuje polia, ktoré tieto obmedzenia nesú, a ako prísne ich klient vynucuje, je vecou každej aplikácie.
OpenVPN robí rozdelenie viditeľným. verify-x509-name pripína očakávaný subjekt cez zhodu name, name-prefix alebo subject. remote-cert-tls server vyžaduje, aby certifikát partnera bol použiteľný ako serverový certifikát, čo odmietne certifikát len klienta, aj keď je vydavateľ dôveryhodný. Žiadne z týchto nastavení sa nenahrádza dodaním súboru CA.
Prezrite si certifikát, skôr než čokoľvek rozhodnete:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNameukáže, kto ho vydal, pre ktoré mená a do kedy.openssl verify -CAfile ca.crt server.crtoverí, či reťazec, ktorý plánujete odoslať, naozaj validuje list.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errorfunguje pre koncové body TLS, ako je webový portál; protokol OpenVPN na 1194 nie je obyčajný TLS tok, takže ten test tam neplatí.
Certifikát s prepadnutým dátumom, bez subjectAltName pre meno, ku ktorému sa pripájate, alebo bez použitia serverAuth zlyhá bez ohľadu na to, ako starostlivo bola kotva nainštalovaná.
Päť kontrol, skôr než jeden prijmete
Porovnajte odtlačok kanálom, ktorý nie je spojením, ktoré sa snažíte opraviť: konzola, inštalátor, ktorý už máte, podpísaný konfiguračný súbor. openssl x509 -in server.crt -noout -fingerprint -sha256 na serveri a tá istá hodnota v protokole klienta stačia na to, aby ste vedeli, že sa pozeráte na jeden objekt.
Potom rozhodnite, čo inštalujete: jeden list alebo autoritu, ktorá môže raziť viac. Potom rozhodnite, kam ide, a pomenujte aplikácie, ktoré toto úložisko čítajú. Zapíšte cestu odstránenia, kým si ju ešte pamätáte, pretože dôveruj-a-choď-ďalej je spôsob, akým sa dočasný import stane trvalým.
Nakoniec naplánujte zmenu. Pripnutý certifikát alebo odtlačok treba pri rotácii certifikátu aktualizovať tým istým dôveryhodným kanálom a súkromná CA má vlastný životný cyklus vydávania a odvolávania. Ak súkromný kľúč unikne, opätovná dôvera ku kópii toho istého certifikátu nič neopraví; identita sa musí vymeniť.
Ak varovanie prežije všetkých päť kontrol, užitočná otázka nie je, ktoré tlačidlo ho umlčí, ale ktoré úložisko klient skutočne číta a odkiaľ ten koreň prišiel. Odpovedzte na to a import, ktorý sa chystáte urobiť, sa stane rozhodnutím namiesto reflexu.