Atšaukėte sertifikatą, sugeneravote naują sąrašą, o senas profilis vis dar pakelia tunelį. Pats atšaukimas nesugedęs: CRL yra pasirašytas pareiškimas, kad serijos numeris nebėra galiojantis, ir jis keičia prieigą tik tada, kai TLS užbaigiantis komponentas jį įkelia, tinkamam išdavėjui, prieš priimdamas priėmimo sprendimą. Būtent čia yra dauguma tokių atvejų, todėl atšaukimas ir atmetimas yra du skirtingi faktai.

Pereikite penkis žemiau pateiktus patikrinimus iš eilės ir sustokite ties pirmuoju, kuris netenkinamas, nes kiekvienas vėlesnis laiko ankstesnius teisingais.

Patikrinkite, kuris komponentas priima priėmimo sprendimą

Įvardykite procesą, kuris validuoja kliento sertifikatą, nes tik tas procesas gali taikyti sąrašą. OpenVPN serveryje tai pats daemonas, sukonfigūruotas su crl-verify. ocserv atveju tai crl eilutė ocserv.conf faile. strongSwan atveju įvestys yra įkelti CRL kartu su strictcrlpolicy. TLS užbaigiantis tarpinis serveris ar įrenginys prieš VPN taip pat gali būti tikrasis tikrintojas, o jei taip, daemonas už jo niekada nemato kliento sertifikato.

WireGuard priklauso kitai kategorijai. Jis neturi sertifikatų ir neturi atšaukimo sąrašo; peer priimamas pagal savo viešąjį raktą konfigūracijoje, todėl prieigos nutraukimas reiškia to rakto pašalinimą. Jei ieškote CRL diegime tik su WireGuard, to mechanizmo ten nėra.

Saugokitės ir spąstų kliento pusėje. Klientas, kuris atsisako jungtis, nes jam nepatinka serverio sertifikatas, taiko serverio grandinę, o ne atšaukia savo paties prisijungimo duomenis. Vartotojo sertifikatas atšaukiamas tik ten, kur tas vartotojo sertifikatas validuojamas, o tai beveik visada serverio pusė.

Patikrinkite, kuriam išdavėjui sąrašas buvo pasirašytas

CRL apsiriboja viena išduodančia CA. Esant šakninei ir tarpinei CA, lapų sertifikatai gaunami iš tarpinės, todėl svarbus sąrašas yra tarpinės CRL; šakninės sąrašas nieko nesako apie tuos lapus. Tikrintojas, nukreiptas į netinkamą failą, jį linksmai parsina, neranda atitinkančio įrašo ir priima viską.

Patvirtinkite poravimą prieš liesdami daemoną. Išdavėjas sertifikate turi atitikti sąrašo subject:

openssl x509 -in client.crt -noout -issuer -serial
openssl crl  -in intermediate.crl -noout -issuer -lastupdate -nextupdate

Kai abu gaunami iš tos pačios CA, sertifikatui išspausdintas serijos numeris yra reikšmė, kuri turi pasirodyti sąraše. Jei jie nesutampa, laikote netinkamą CRL arba netinkamą jo kopiją.

Galiojimas priklauso tam pačiam patikrinimui. nextUpdate praeityje sąrašą daro pasenusį, o tikrintojas, kuris nepavyksta uždarai, tada atmes kiekvieną klientą, o ne tik atšauktąjį.

Patikrinkite, ar serijos numeris yra daemono įkeltame faile

Atšaukimas įrašo įrašą į CA duomenų bazę, o pergeneravimas įrašo naują failą. Nė vienas veiksmas nepasiekia veikiančio daemono, kuris paleidimo metu įkėlė seną kopiją. Išmeskite sąrašą ir ieškokite serijos numerio:

openssl crl -in intermediate.crl -noout -text | grep -i -A2 'Serial Number'
openssl ca -revoke client.crt
openssl ca -gencrl -out intermediate.crl

Tada patikrinkite, kaip jūsų diegimas paima failą. OpenVPN skaito kelią, duotą crl-verify, vieną kartą paleidimo metu, todėl naujam sąrašui reikia paleidimo iš naujo arba paleidimo iš naujo signalo; ta pati parinktis, nukreipta į katalogą, iš naujo skaitoma kiekvienam prisijungimui, ir todėl egzistuoja katalogo režimas. strongSwan turi iš naujo įkelti savo prisijungimo duomenis, pavyzdžiui, su swanctl --load-creds. Tai, kad failas diske yra teisingas, ir tai, kad tikrintojas jį naudoja, yra du skirtingi faktai.

Patikrinkite trūkstamo arba pasenusio sąrašo politiką

Tai sprendimas, kurio daugelis diegimų niekada nepriima aiškiai, ir jis nulemia, ar atšaukimas jus apsaugo, ar visus užrakina lauke. Fail-closed reiškia, kad be tinkamos atšaukimo informacijos įvyksta atmetimas; fail-open reiškia, kad tikrintojas tęsia be jos. strongSwan pateikia pasirinkimą kaip strictcrlpolicy. OpenVPN su crl-verify atsisako paleisti failą, kurio negali perskaityti ar išparsinti, o pasenęs sąrašas pasirodo kaip TLS tikrinimo klaida dėl pasenusio CRL, o ne kaip tylus priėmimas.

State of the revocation dataFail-closed resultFail-open result
List missing or unreadableVerification fails, so expect an outageEvery client connects, including the revoked one
List past nextUpdateValidation errors until a fresh list is deployedOld status is trusted indefinitely
Revoked serial present in the loaded listHandshake rejected for that certificateHandshake rejected for that certificate

Kad ir kokią kryptį pasirinktumėte, automatizavimas svarbesnis už pasirinkimą: užduotis, kuri pergeneruoja CRL prieš nextUpdate, ir įspėjimas, kai įdiegta kopija sensta, neleidžia nė vienai politikai tapti incidentu. Internetinis tikrinimas su OCSP perkelia šviežumą į atsakiklį, bet galioja ta pati taisyklė, nes tikrintojas, nesukonfigūruotas tikrinti atsakymo, nieko nekeičia.

Patikrinkite aktyvią sesiją, tada rakto kopijas

Atšaukimas vertinamas sertifikato validavimo metu, kuris vyksta jungiantis ir persiderant. Nustatyta sesija veikia toliau, kol nepersidera, o OpenVPN numatytoji reikšmė yra kartą per valandą su reneg-sec 3600. Jei asmuo turi nedelsiant išeiti iš tinklo, užbaikite sesiją kartu su sąrašo paskelbimu, ir tada patvirtinkite, kad pakartotinis prisijungimas atmetamas.

Atskirkite prisijungimo duomenis nuo jų kopijų. Profilio ištrynimas viename nešiojamajame kompiuteryje nesutrukdo kitai to paties privataus rakto kopijai autentifikuotis; atšaukimas yra tai, kas padaro kiekvieną kopiją nenaudingą, ir tik kai ankstesni patikrinimai galioja. Duokite pakaitiniam įrenginiui savo sertifikatą, kad vieną būtų galima atšaukti neliečiant kito.

Prieš pavadindami tai baigtu: validuojantis komponentas nustatytas, sąrašo išdavėjas atitinka lapo išdavėją, atšauktas serijos numeris yra kopijoje, kurią daemonas faktiškai įkėlė, trūkstamų ar pasenusių sąrašų politika yra sąmoninga ir stebima, o aktyvi sesija buvo užbaigta, o ne palaukta. Formatai, esantys už viso to, nurodyti RFC 5280.

Susiję straipsniai