Dva klijentska certifikata s različitim serijskim brojevima, različitim ključevima, pa čak i različitim punim subjektima, ipak mogu završiti u istoj datoteci pravila, jer poslužitelj ne gleda ništa od toga. On čita ime iz certifikata i otvara odgovarajuću datoteku konfiguracije klijenta. Ako oba certifikata nose isto ime, drugi nasljeđuje pravila prvoga u trenutku kada se poveže.

Sukob nastaje pri upisu, a otkriva se tek pri povezivanju, obično kada uređaj dobije adresu ili skup ruta koje pripadaju drugom stroju. Sprječavanje znači dogovoriti koje polje poslužitelj preslikava, a zatim rezervirati tu vrijednost prije nego što se bilo što potpiše.

Vaši alati za certifikate neće vas upozoriti, jer su jedinstvenost unutar X.509 i jedinstvenost imena OpenVPN pravila različiti zahtjevi koje provode različiti sustavi.

Poslužitelj traži ime, a ne otisak prsta

Kod uobičajenog preslikavanja na temelju certifikata, poslužitelj uzima zajedničko ime iz predočenog certifikata i traži datoteku tog imena u svojem direktoriju konfiguracije klijenata. Ta datoteka može prikvačiti statičnu adresu, gurati rute ili primijeniti oznake vatrozida po klijentu. Pretraga je podudaranje niza znakova s imenom datoteke, pa su velika i mala slova, razmaci i interpunkcija jednako važni.

Neke implementacije namjerno zamjenjuju preslikavanje tako da autentificirano korisničko ime preuzme ulogu zajedničkog imena, i tada korisničko ime mora biti jedinstveno. U svakom slučaju, vrijednost koja odabire pravila jest vrijednost koju rezervirate. Odlučite koja je prije nego što bilo što izdate; nagađanje nakon sukoba skuplje je od pitanja.

Gdje se dva tijela susreću na istom imenu

Organizacija koja prihvaća certifikate od više od jednog izdavateljskog tijela vodi dva neovisna postupka upisa koji pišu u jedan prostor imena. Vlastita pravila jedinstvenosti svakog tijela vrijede unutar njega samoga, pa oba mogu zakonito izdati certifikat za isto zajedničko ime, a da pritom nijedno ne primijeti ništa pogrešno.

Serijski brojevi ne pomažu. X.509 zahtijeva da serijski broj bude jedinstven unutar opsega njegova izdavatelja, što je svojstvo knjigovodstva tog tijela, a ne globalni identitet uređaja. Provjera subjekta ujedno je drukčija od provjere zajedničkog imena: dva certifikata mogu dijeliti CN, ali se razlikovati u organizacijskoj jedinici i stoga nositi različite subjekte. Svako od tih svojstava može vrijediti dok poslužitelj i dalje preslikava oba certifikata na jedno ime datoteke.

Dokumentacija OpenSSL CA obrađuje postavku unique_subject koja upravlja mišljenjem njegove vlastite baze podataka, a poštena je početna točka pročitati svoju konfiguraciju izdavanja umjesto pretpostavke da vrijedi neka zadana vrijednost EasyRSA ili OpenSSL-a.

Rezervirajte stvarno ime prije potpisivanja

Vodite registar koji preslikava uređaj u njegov odobreni zapis i odatle u točno ime datoteke pravila, tako da se ime dodijeli jednom i ostane dodijeljeno. Rezervacija mora biti atomska, što u praksi znači ograničenje baze podataka ili bravu oko koraka dodijeli-pa-potpiši, a ne tablicu koju uređuju dvije osobe.

Zatim učinite provjeru dijelom izdavanja: odbijte potpisati kada traženo ime već postoji i uključite u tu provjeru svako tijelo kojemu poslužitelj vjeruje, jer je ime koje je rezerviralo drugo tijelo jednako zauzeto. Odbijen zahtjev s jasnim razlogom jeftiniji je od tikete o uređaju koji stalno dobiva tuđu statičnu adresu.

Obnova namjerno ponovno rabi ime

Ponovno izdavanje za postojeći uređaj trebalo bi dati novi serijski broj pod istim imenom pravila, i to je zakonito ponovno korištenje, a ne sukob. Unaprijed treba odlučiti o preklapanju: smiju li stari i novi certifikat biti valjani istodobno, i kako se stara vjerodajnica povlači.

Ne posežite za duplicate-cn da to riješite. Ta poslužiteljska opcija upravlja istodobnim vezama koje predočuju isto ime; ne zaključava upis i njezino uključivanje ne čini jednu dijeljenu statičnu adresu sigurnom za dva stroja istodobno. Opovrgnuće obično prepoznaje certifikat po izdavatelju i serijskom broju, pa povlačenje stare vjerodajnice ne mora poništiti njezinu zamjenu dokle god poslužitelj prima i provodi ispravne podatke o opovrgnuću.

Potvrdite preslikavanje alatima na stroju

Prije nego što uređaju predate njegovu novu vjerodajnicu, pročitajte ime iz certifikata onako kako će to učiniti poslužitelj, a zatim ga usporedite s datotekom pravila za koju očekujete da će biti odabrana.

openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf

Prva naredba ispisuje polja subjekta odvojeno, što odmah čini vidljivim zalutalu organizacijsku jedinicu ili udvostručeni razmak. Druga potvrđuje da datoteka pravila postoji pod točno tim imenom, a treća pokazuje je li poslužitelj konfiguriran dopuštati nekoliko sesija na jednom imenu. Pokrenite sve tri na novom certifikatu prije nego što napusti korak upisa, dok pogreška još stoji potpis, a ne incident. Sačuvajte izlaz uz tiketu kako bi sljedeća osoba vidjela koje je ime poslužitelj stvarno dobio.

Završite stvarnom vezom i usporedite dodijeljenu adresu i gurane rute s datotekom pravila, a ne s onim što ste namjeravali napisati. Ako dva uređaja prijave istu statičnu adresu, registar ima sukob koji nikakav pregled certifikata neće otkriti.

Povezani članci