Pašparakstīts VPN sertifikāts: ko tas nozīmē un kam tas uzticas
Pašparakstīts VPN sertifikāts joprojām šifrē satiksmi. Mainās tas, kam jūs teicāt tam uzticēties, kura krātuve saņem šo uzticību un kādas pārbaudes paliek.
Šeit vislielāko kaitējumu nodara divi uzskati: ka pašparakstīts VPN sertifikāts nozīmē, ka tunelis nav šifrēts, un ka jebkā instalēšana, ko pieprasījis VPN klients, ietekmē tikai VPN. Neviens no tiem neiztur saskari ar reālu izvietojumu. Pašparakstīts sertifikāts apraksta paraksta attiecības, nevis drošības spriedumu, un pievienotās uzticības apjoms ir atkarīgs no tā, kurā krātuvē tas nonāk. Esmu redzējis, kā atbalsta dienests importēja pakalpojumu sniedzēja sakni Windows mašīnā, lai apklusinātu vienu brīdinājumu, un pēc tam pavadīja pēcpusdienu, skaidrojot, kāpēc pārlūks pārstāja sūdzēties par nesaistītu portālu. Abas šī jautājuma puses pieder kopā, tāpēc uztveriet tās kā vienu.
Sertifikāts nav uzticības krātuve
Fails, ko serveris uzrāda, satur publisko atslēgu, subjekta vārdu, izdevēja vārdu, derīguma datumus un paplašinājumus. Pašparakstīts nozīmē, ka subjekts un izdevējs ir viena un tā pati vienība un paraksts tiek pārbaudīts ar paša sertifikāta atslēgu. Nekas šajā definīcijā nesaka, ka savienojums ir vājš, un nekas nesaka, ka klients to pieņems.
Pieņemšana nāk no citurienes: CA fails, uz kuru jūs vēršat klientu, nospiedums, ko salīdzināt ar roku, vai sakne, kas jau atrodas krātuvē, kuru klients lasa. Izvietojums var būt pilnīgi vesels, kamēr tā sertifikāts izgāztos katrā publiskā testā. openssl verify pret sistēmas paketi ziņos par nezināmu izdevēju, un šis ziņojums ir pareizs, nevis defekts.
OpenVPN opcija ca ir visskaidrākais lietotnes ierobežotas uzticības gadījums. Šis fails nosauc enkurus, ko klients pieņems, un tajā var būt viena privāta CA vai, mazā izvietojumā, paša servera pašparakstīts sertifikāts. Versija 2.6 pieņem arī --peer-fingerprint, lai piespraustu SHA-256 nospiedumu, nevis izplatītu CA failu. WireGuard atrodas vēl tālāk: tam vispār nav sertifikātu, tikai statiska publiskā atslēga katram partnerim, tāpēc pašparakstīšanās jautājums uz to neattiecas.
Tas, kur jūs instalējat uzticību, nosaka, kas to manto
Ievietojiet vienu un to pašu sertifikātu trīs vietās, un jūs iegūsiet trīs dažādus sprādziena rādiusus. Pakete, ko lasa tikai VPN klients, ietekmē šo klientu. Sakne operētājsistēmas krātuvē ietekmē katru programmu, kas konsultējas ar šo krātuvi. Pārlūks ar savu uzticības datubāzi var ignorēt abas, un tāpēc brīdinājums var pārdzīvot importu, kas šķita strādājam.
Debian vai Ubuntu gadījumā faila nomešana mapē /usr/local/share/ca-certificates/ un update-ca-certificates palaišana maina visas sistēmas paketi. Windows gadījumā certutil -addstore -f Root raksta mašīnas krātuvē un prasa paaugstinātu komandrindu, savukārt -user pievienošana mērķē uz pašreizējā lietotāja krātuvi; abi nav savstarpēji aizstājami. Firefox uztur savu NSS datubāzi, tāpēc OS līmeņa imports tur var nekad neparādīties.
Apjoms ir svarīgs tāpēc, ko var darīt iestāde. Izdevēja CA var parakstīt vārdus, ar kuriem tai nav nekādu attiecību, tāpēc viss, kas uzticas šai krātuvei, pieņems šos parakstus. Viens piesprausts lapa to nevar; tā autentificē tieši vienu partnera identitāti. Ja mērķis ir savienot vienu VPN, lietotnes ierobežota CA vai piesprausta lapa to sasniedz, kamēr mašīnas mēroga sakne ir daudz lielāka piekāpšanās, nekā prasa simptoms.
Jūs joprojām šifrējat bez publiskas CA
TLS rokasspiediens atvasina sesijas atslēgas neatkarīgi no tā, vai partnera sertifikāts ķēdējas pie kaut kā, kam jūs jau uzticaties. Pašparakstīts nenozīmē atklātu tekstu un nenozīmē, ka satiksme lidojumā ir lasāma. Tas nozīmē, ka klientam nav iepriekšēja iemesla ticēt, ka atslēga pieder serverim, kuru tas pieprasīja.
Tieši šajā spraugā dzīvo īstie uzbrukumi. Klients, kas konfigurēts pieņemt jebkuru sertifikātu, vai nu ar izslēgtu pārbaudes iestatījumu, vai ar vienreiz nospiestu un aizmirstu pogu “tomēr uzticēties”, labprāt šifrēs tam, kas atbild. Pārtveršana notiek autentifikācijas solī, pirms pārvietojas lietotnes dati. Šifrēšana bez identitātes pārbaudes tur pasīvu novērotāju ārpusē un dara maz ko citu.
Uzticēšanās izdevējam neizlaiž vārda pārbaudi
Ķēdes validācija, vārda atbilstība un sertifikāta mērķis ir atsevišķi lēmumi. Ķēde var būt derīga, kamēr vārds ir nepareizs, un vārds var atbilst, kamēr sertifikāts izsniegts citai lomai. RFC 5280 definē laukus, kas nes šos ierobežojumus, un tas, cik stingri klients tos īsteno, ir katras lietotnes jautājums.
OpenVPN padara šķēlumu redzamu. verify-x509-name piesprauž gaidīto subjektu, izmantojot name, name-prefix vai subject atbilstību. remote-cert-tls server prasa, lai partnera sertifikāts būtu izmantojams kā servera sertifikāts, kas noraida tikai klienta sertifikātu pat tad, ja izdevējam uzticas. Neviens no iestatījumiem netiek aizstāts ar CA faila nosūtīšanu.
Pārbaudiet sertifikātu, pirms kaut ko nolemjat:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNameparāda, kas to izdeva, kuriem vārdiem un līdz kuram laikam.openssl verify -CAfile ca.crt server.crtpārbauda, vai sūtāmā ķēde tiešām validē lapu.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errordarbojas TLS galapunktiem, piemēram, tīmekļa portālam; OpenVPN protokols 1194. portā nav parasts TLS strauts, tāpēc šis tests tur neattiecas.
Sertifikāts ar beigušos datumu, bez subjectAltName vārdam, ar kuru savienojaties, vai bez serverAuth lietojuma izgāžas neatkarīgi no tā, cik rūpīgi enkurs uzstādīts.
Piecas pārbaudes pirms viena pieņemšanas
Salīdziniet nospiedumu kanālā, kas nav savienojums, kuru mēģināt salabot: konsole, jau esošs instalētājs, parakstīts konfigurācijas fails. openssl x509 -in server.crt -noout -fingerprint -sha256 serverī un tā pati vērtība klienta žurnālā ir pietiekami, lai zinātu, ka skatāties uz vienu objektu.
Tālāk izlemiet, ko instalējat: vienu lapu vai iestādi, kas var nokalst vairāk. Pēc tam izlemiet, kur tas aiziet, un nosauciet lietotnes, kas lasa šo krātuvi. Pierakstiet noņemšanas ceļu, kamēr to vēl atceraties, jo uzticies-un-ej-tālāk ir veids, kā pagaidu imports kļūst pastāvīgs.
Visbeidzot, plānojiet izmaiņas. Piesprausts sertifikāts vai nospiedums ir jāatjaunina pa to pašu uzticamo kanālu, kad sertifikāts rotē, un privātai CA ir savs izsniegšanas un atsaukšanas dzīves cikls. Ja privātā atslēga noplūst, atkārtota uzticēšanās tā paša sertifikāta kopijai neko nelabo; identitāte ir jāaizstāj.
Ja brīdinājums pārdzīvo visas piecas pārbaudes, noderīgais jautājums nav, kura poga to apklusina, bet kuru krātuvi klients faktiski lasa un no kurienes nāca tā sakne. Atbildiet uz to, un imports, ko tūlīt veiksiet, kļūs par lēmumu, nevis refleksu.