Savarankiškai pasirašytas VPN sertifikatas: ką jis reiškia ir kuo pasitiki
Savarankiškai pasirašytas VPN sertifikatas vis tiek šifruoja srautą. Keičiasi tai, kam pasakėte juo pasitikėti, kuri saugykla gauna tą pasitikėjimą ir kokie patikrinimai lieka.
Dažniausiai žalą daro du įsitikinimai: kad savarankiškai pasirašytas VPN sertifikatas reiškia, jog tunelis nešifruojamas, ir kad bet ko, ko paprašė VPN klientas, įdiegimas paveikia tik VPN. Nė vienas neatsilaiko susidūręs su realiu diegimu. Savarankiškai pasirašytas sertifikatas apibūdina parašo santykį, o ne saugumo nuosprendį, o pridedamo pasitikėjimo apimtis priklauso nuo to, į kurią saugyklą jis patenka. Mačiau, kaip pagalbos tarnyba importavo teikėjo šaknį į Windows mašiną, kad nutildytų vieną įspėjimą, o paskui praleido visą popietę aiškindama, kodėl naršyklė nustojo skųstis dėl nesusijusio portalo. Abi šio klausimo pusės priklauso kartu, todėl traktuokite jas kaip vieną.
Sertifikatas nėra pasitikėjimo saugykla
Failas, kurį pateikia serveris, turi viešąjį raktą, subjekto vardą, išdavėjo vardą, galiojimo datas ir plėtinius. Savarankiškai pasirašytas reiškia, kad subjektas ir išdavėjas yra tas pats subjektas, o parašas tikrinamas paties sertifikato raktu. Niekas tame apibrėžime nesako, kad ryšys silpnas, ir niekas nesako, kad klientas jį priims.
Priėmimas ateina iš kitur: CA failas, į kurį nukreipiate klientą, piršto atspaudas, kurį lyginate ranka, arba šaknis, kuri jau guli saugykloje, kurią klientas skaito. Diegimas gali būti visiškai sveikas, nors jo sertifikatas žlugtų kiekviename viešame teste. openssl verify prieš sistemos rinkinį praneš apie nežinomą išdavėją, ir ta ataskaita teisinga, o ne defektas.
OpenVPN parinktis ca yra aiškiausias programos riboto pasitikėjimo atvejis. Tas failas įvardija inkarus, kuriuos klientas priims, ir jame gali būti viena privati CA arba mažame diegime paties serverio savarankiškai pasirašytas sertifikatas. 2.6 versija taip pat priima --peer-fingerprint, kad būtų prisegtas SHA-256 piršto atspaudas, o ne platinamas CA failas. WireGuard stovi dar toliau: jame visai nėra sertifikatų, tik statinis viešasis raktas kiekvienam partneriui, todėl savarankiško parašo klausimas jam netaikomas.
Kur įdiegiate pasitikėjimą, lemia, kas jį paveldi
Įdėkite tą patį sertifikatą į tris vietas ir gausite tris skirtingus sprogimo spindulius. Rinkinys, kurį skaito tik VPN klientas, paveikia tą klientą. Šaknis operacinės sistemos saugykloje paveikia kiekvieną programą, kuri konsultuojasi su ta saugykla. Naršyklė su savo pasitikėjimo duomenų baze gali nepaisyti abiejų, todėl įspėjimas gali išgyventi importą, kuris atrodė veikiantis.
Debian arba Ubuntu atveju failo įdėjimas į /usr/local/share/ca-certificates/ ir update-ca-certificates paleidimas keičia visos sistemos rinkinį. Windows atveju certutil -addstore -f Root rašo į mašinos saugyklą ir reikalauja padidintos komandinės eilutės, o pridėjus -user nukreipiama į dabartinio naudotojo saugyklą; šie du nėra keičiami. Firefox laiko savo NSS duomenų bazę, todėl OS lygmens importas ten gali niekada nepasirodyti.
Apimtis svarbi dėl to, ką gali padaryti institucija. Išduodanti CA gali pasirašyti vardus, su kuriais neturi jokio ryšio, todėl viskas, kas pasitiki ta saugykla, priims tuos parašus. Vienas prisegtas lapas to negali; jis autentifikuoja lygiai vieną partnerio tapatybę. Jei tikslas yra prijungti vieną VPN, programos ribota CA arba prisegtas lapas tai pasiekia, o mašinos masto šaknis yra daug didesnė nuolaida, nei reikalauja simptomas.
Jūs vis tiek šifruojate be viešosios CA
TLS rankos paspaudimas išveda sesijos raktus nepriklausomai nuo to, ar partnerio sertifikatas jungiasi į grandinę su tuo, kuo jau pasitikite, ar ne. Savarankiškai pasirašytas nereiškia atviro teksto ir nereiškia, kad srautas yra skaitomas skrydžio metu. Tai reiškia, kad klientas neturi išankstinės priežasties tikėti, kad raktas priklauso serveriui, kurio jis paprašė.
Būtent toje spragoje gyvena tikros atakos. Klientas, sukonfigūruotas priimti bet kurį sertifikatą, ar tai būtų išjungtas tikrinimo nustatymas, ar vieną kartą paspaustas ir pamirštas mygtukas „vis tiek pasitikėk“, mielai šifruos tam, kas atsakys. Perėmimas įvyksta autentifikavimo žingsnyje, prieš judant programos duomenims. Šifravimas be tapatybės patikros laiko pasyvų stebėtoją lauke ir daro mažai ką kita.
Pasitikėjimas išdavėju nepraleidžia vardo patikros
Grandinės patikra, vardo atitikimas ir sertifikato paskirtis yra atskiri sprendimai. Grandinė gali būti galiojanti, o vardas neteisingas, ir vardas gali atitikti, o sertifikatas išduotas kitam vaidmeniui. RFC 5280 apibrėžia laukus, kurie neša šiuos apribojimus, o tai, kaip griežtai klientas juos vykdo, yra kiekvienos programos reikalas.
OpenVPN padaro atskyrimą matomą. verify-x509-name prisega laukiamą subjektą atitikdamas name, name-prefix arba subject. remote-cert-tls server reikalauja, kad partnerio sertifikatas būtų naudingas kaip serverio sertifikatas, o tai atmeta tik kliento sertifikatą net tada, kai išdavėju pasitikima. Nė vienas nustatymas nepakeičiamas CA failo siuntimu.
Patikrinkite sertifikatą prieš ką nors nuspręsdami:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNameparodo, kas jį išdavė, kuriems vardams ir iki kada.openssl verify -CAfile ca.crt server.crtpatikrina, ar siunčiama grandinė tikrai patvirtina lapą.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errorveikia TLS galiniams taškams, pavyzdžiui, žiniatinklio portalui; OpenVPN protokolas 1194 prievade nėra paprastas TLS srautas, todėl tas testas ten netaikomas.
Sertifikatas su pasibaigusia data, be subjectAltName vardui, prie kurio jungiatės, arba be serverAuth naudojimo nepraeina nepriklausomai nuo to, kaip kruopščiai įdiegtas inkaras.
Penki patikrinimai prieš priimant vieną
Palyginkite piršto atspaudą kanalu, kuris nėra ryšys, kurį bandote taisyti: konsolė, jau turimas diegėjas, pasirašytas konfigūracijos failas. openssl x509 -in server.crt -noout -fingerprint -sha256 serveryje ir ta pati reikšmė kliento žurnale yra pakankami žinoti, kad žiūrite į vieną objektą.
Toliau nuspręskite, ką diegiate: vieną lapą ar instituciją, kuri gali nukalti daugiau. Tada nuspręskite, kur jis eis, ir įvardykite programas, kurios skaito tą saugyklą. Užsirašykite pašalinimo kelią, kol dar jį atsimenate, nes pasitikėk-ir-eik-toliau yra būdas, kuriuo laikinas importas tampa nuolatinis.
Galiausiai suplanuokite pakeitimą. Prisegtas sertifikatas ar piršto atspaudas turi būti atnaujinamas tuo pačiu patikimu kanalu, kai sertifikatas keičiasi, o privati CA turi savo išdavimo ir atšaukimo gyvavimo ciklą. Jei privatusis raktas nuteka, pasitikėjimo atnaujinimas to paties sertifikato kopija nieko nepadaro; tapatybė turi būti pakeista.
Jei įspėjimas išgyvena visus penkis patikrinimus, naudingas klausimas nėra, kuris mygtukas jį nutildo, o kurią saugyklą klientas iš tikrųjų skaito ir iš kur atėjo ta šaknis. Atsakykite į tai, ir importas, kurį ketinate atlikti, taps sprendimu, o ne refleksu.