Dva certifikáty OpenVPN, jedno meno CCD: čo sa pokazilo
Sériové číslo je jedinečné len v rámci svojho vydavateľa, zatiaľ čo OpenVPN vyberá súbor CCD podľa mena. Rezervujte toto efektívne meno už pri registrácii a kontrolujte obnovu.
Dva klientske certifikáty s rôznymi sériovými číslami, rôznymi kľúčmi a dokonca rôznymi úplnými subjektmi môžu stále skončiť v jednom súbore politiky, pretože server na nič z toho nehľadí. Prečíta meno z certifikátu a otvorí zodpovedajúci konfiguračný súbor klienta. Ak oba certifikáty nesú rovnaké meno, druhý zdedí politiku prvého v okamihu, keď sa pripojí.
Kolízia vzniká pri registrácii a odhalí sa až pri pripojení, zvyčajne keď zariadenie dostane adresu alebo sadu trás, ktoré patria inému stroju. Prevencia znamená dohodnúť sa, ktoré pole server mapuje, a potom túto hodnotu rezervovať skôr, než sa čokoľvek podpíše.
Vaše nástroje na certifikáty vás nevarujú, pretože jedinečnosť v rámci X.509 a jedinečnosť mena politiky OpenVPN sú rôzne požiadavky presadzované rôznymi systémami.
Server hľadá meno, nie odtlačok
Pri obvyklom mapovaní založenom na certifikátoch server vezme bežné meno z predloženého certifikátu a hľadá súbor s týmto menom vo svojom adresári klientskych konfigurácií. Ten súbor môže pripnúť statickú adresu, posielať trasy alebo uplatniť značky firewallu pre jednotlivých klientov. Vyhľadávanie je zhoda reťazca s názvom súboru, takže záleží na veľkosti písmen, medzerách aj interpunkcii.
Niektoré nasadenia mapovanie zámerne prehadzujú, aby bežné meno prevzalo overené používateľské meno, a potom musí byť jedinečné práve používateľské meno. Tak či onak, hodnota, ktorá vyberá politiku, je hodnota, ktorú rezervujete. Rozhodnite, ktorá to je, skôr než čokoľvek vydáte; hádanie po kolízii stojí viac než otázka.
Kde sa dve autority stretnú na rovnakom mene
Organizácia, ktorá prijíma certifikáty od viac než jednej vydávajúcej autority, prevádzkuje dva nezávislé procesy registrácie zapisujúce do jedného menného priestoru. Vlastné pravidlá jedinečnosti každej autority platia v jej vnútri, takže obe môžu legitímne vydať certifikát na rovnaké bežné meno, a pritom si žiadna nič nesprávne nevšimne.
Sériové čísla nepomáhajú. X.509 vyžaduje, aby sériové číslo bolo jedinečné v rámci pôsobnosti jeho vydavateľa, čo je vlastnosť účtovníctva danej autority, nie globálna identita zariadenia. Kontrola subjektu je tiež iný test než kontrola bežného mena: dva certifikáty môžu zdieľať CN, ale líšiť sa v organizačnej jednotke, a preto niesť odlišné subjekty. Všetky tieto vlastnosti môžu platiť, a server napriek tomu mapuje oba certifikáty na jedno meno súboru.
Dokumentácia OpenSSL CA pokrýva nastavenie unique_subject, ktoré riadi mienku jej vlastnej databázy, a poctivým východiskom je prečítať si svoju vydávajúcu konfiguráciu namiesto predpokladu, že platí určité predvolené nastavenie EasyRSA alebo OpenSSL.
Rezervujte efektívne meno pred podpisom
Veďte register, ktorý mapuje zariadenie na jeho schválený záznam a odtiaľ na presný názov súboru politiky, aby sa meno pridelilo raz a zostalo pridelené. Rezervácia musí byť atomická, čo v praxi znamená databázové obmedzenie alebo zámok okolo kroku prideľ-a-podpíš, nie tabuľku, ktorú upravujú dvaja ľudia.
Potom urobte z kontroly súčasť vydávania: odmietnite podpísať, keď požadované meno už existuje, a do tejto kontroly zahrňte každú autoritu, ktorej server dôveruje, pretože meno rezervované druhou autoritou je rovnako obsadené. Odmietnutá žiadosť s jasným dôvodom je lacnejšia než tiket o zariadení, ktoré stále dostáva statickú adresu niekoho iného.
Obnova zámerne znovu používa meno
Opätovné vydanie pre existujúce zariadenie by malo priniesť nové sériové číslo pod rovnakým menom politiky, a to je legitímne opätovné použitie, nie kolízia. Vopred treba rozhodnúť prekrytie: či starý a nový certifikát môžu byť platné súčasne, a ako sa staré poverenie vyraďuje.
Nesiahajte po duplicate-cn, aby ste to vyriešili. Táto voľba servera riadi súbežné pripojenia predkladajúce rovnaké meno; nezamyká registráciu a jej zapnutie nerobí jednu zdieľanú statickú adresu bezpečnou pre dva stroje naraz. Odvolanie zvyčajne identifikuje certifikát podľa vydavateľa a sériového čísla, takže vyradenie starého poverenia nemusí zneplatniť jeho náhradu, pokiaľ server dostáva a presadzuje správne údaje o odvolaní.
Potvrďte mapovanie nástrojmi na stroji
Skôr než zariadeniu odovzdáte jeho nové poverenie, prečítajte meno z certifikátu tak, ako to urobí server, a potom ho porovnajte so súborom politiky, ktorý očakávate, že bude vybraný.
openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf
Prvý príkaz vypisuje polia subjektu oddelene, čo okamžite zviditeľní zablúdenú organizačnú jednotku alebo zdvojenú medzeru. Druhý potvrdzuje, že súbor politiky existuje presne pod týmto menom, a tretí ukazuje, či je server nakonfigurovaný povoliť niekoľko relácií na jednom mene. Spustite všetky tri na novom certifikáte, kým opustí krok registrácie, kým chyba ešte stojí podpis a nie incident. Uložte výstup k tiketu, aby ďalší človek videl, aké meno server skutočne dostal.
Skončite skutočným pripojením a porovnajte pridelenú adresu a posielané trasy so súborom politiky, nie s tým, čo ste zamýšľali napísať. Ak dve zariadenia hlásia rovnakú statickú adresu, register má kolíziu, ktorú žiadna kontrola certifikátov nikdy neodhalí.