Dva certifikáty OpenVPN, jedno jméno CCD: co se pokazilo
Sériové číslo je jedinečné jen v rámci svého vydavatele, zatímco OpenVPN vybírá soubor CCD podle jména. Rezervujte toto efektivní jméno už při registraci a hlídejte obnovu.
Dva klientské certifikáty s různými sériovými čísly, různými klíči a dokonce různými úplnými subjekty mohou stále skončit v jediném souboru zásad, protože server na nic z toho nehledí. Přečte jméno z certifikátu a otevře odpovídající konfigurační soubor klienta. Pokud oba certifikáty nesou stejné jméno, druhý zdědí zásady prvního ve chvíli, kdy se připojí.
Kolize vzniká při registraci a odhalí se až při připojení, obvykle když zařízení dostane adresu nebo sadu tras, které patří jinému stroji. Prevence znamená dohodnout, které pole server mapuje, a pak tuto hodnotu rezervovat dřív, než se cokoli podepíše.
Vaše nástroje pro certifikáty vás nevarují, protože jedinečnost uvnitř X.509 a jedinečnost jména zásad OpenVPN jsou různé požadavky vynucované různými systémy.
Server hledá jméno, ne otisk
Při obvyklém mapování podle certifikátů vezme server běžné jméno z předloženého certifikátu a hledá soubor toho jména ve svém adresáři klientských konfigurací. Tento soubor může připnout statickou adresu, posílat trasy nebo uplatňovat značky firewallu pro jednotlivé klienty. Vyhledávání je shoda řetězce s názvem souboru, takže záleží na velikosti písmen, mezerách i interpunkci.
Některá nasazení mapování záměrně prohazují, aby běžné jméno převzalo ověřené uživatelské jméno, a pak musí být jedinečné uživatelské jméno. Ať tak či onak, hodnota, která vybírá zásady, je hodnota, kterou rezervujete. Rozhodněte, která to je, dřív než cokoli vydáte; hádání po kolizi stojí víc než otázka.
Kde se dvě autority potkají na stejném jménu
Organizace, která přijímá certifikáty od více než jedné vydávající autority, provozuje dva nezávislé procesy registrace zapisující do jednoho jmenného prostoru. Vlastní pravidla jedinečnosti každé autority platí uvnitř ní samé, takže obě mohou legitimně vydat certifikát pro stejné běžné jméno, aniž by kterákoli něco špatného postřehla.
Sériová čísla nepomohou. X.509 vyžaduje, aby sériové číslo bylo jedinečné v rámci působnosti jeho vydavatele, což je vlastnost účetnictví dané autority, nikoli globální identita zařízení. Kontrola subjektu je také jiný test než kontrola běžného jména: dva certifikáty mohou sdílet CN, ale lišit se v organizační jednotce, a proto nést odlišné subjekty. Každá z těchto vlastností může platit, a přesto server oba certifikáty namapuje na jedno jméno souboru.
Dokumentace OpenSSL CA pokrývá nastavení unique_subject, které řídí mínění jeho vlastní databáze, a poctivým výchozím bodem je přečíst si vaši vydávající konfiguraci, místo abyste předpokládali, že platí určité výchozí nastavení EasyRSA nebo OpenSSL.
Rezervujte efektivní jméno před podpisem
Veďte registr, který mapuje zařízení na jeho schválený záznam a odtud na přesný název souboru zásad, aby se jméno přidělilo jednou a zůstalo přidělené. Rezervace musí být atomická, což v praxi znamená databázové omezení nebo zámek kolem kroku přiděl-a-podepiš, ne tabulku, kterou upravují dva lidé.
Potom udělejte z kontroly součást vydávání: odmítněte podepsat, když požadované jméno už existuje, a do této kontroly zahrňte každou autoritu, které server důvěřuje, protože jméno rezervované druhou autoritou je stejně obsazené. Odmítnutá žádost s jasným důvodem je levnější než tiket o zařízení, které pořád dostává statickou adresu někoho jiného.
Obnova záměrně znovu používá jméno
Opětovné vydání pro existující zařízení by mělo přinést nové sériové číslo pod stejným jménem zásad, a to je legitimní opětovné použití, nikoli kolize. Předem je třeba rozhodnout překryv: zda starý a nový certifikát mohou být platné současně, a jak se staré pověření vyřazuje.
Nesahajte po duplicate-cn, abyste to vyřešili. Tato volba serveru řídí souběžná připojení předkládající stejné jméno; nezamyká registraci a její zapnutí nedělá jednu sdílenou statickou adresu bezpečnou pro dva stroje najednou. Odvolání obvykle identifikuje certifikát podle vydavatele a sériového čísla, takže vyřazení starého pověření nemusí zneplatnit jeho náhradu, pokud server dostává a vynucuje správná data o odvolání.
Potvrďte mapování nástroji na stroji
Než zařízení předáte jeho nové pověření, přečtěte jméno z certifikátu tak, jak to udělá server, a poté je porovnejte se souborem zásad, který očekáváte, že bude vybrán.
openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf
První příkaz vypisuje pole subjektu odděleně, takže okamžitě ukáže zatoulanou organizační jednotku nebo zdvojenou mezeru. Druhý potvrzuje, že soubor zásad existuje přesně pod tímto jménem, a třetí ukazuje, zda je server nakonfigurován povolit několik relací na jednom jménu. Spusťte všechny tři na novém certifikátu, než opustí krok registrace, dokud chyba ještě stojí podpis, a ne incident. Uložte výstup k tiketu, aby další člověk viděl, jaké jméno server skutečně dostal.
Skončete skutečným připojením a porovnejte přidělenou adresu a posílané trasy se souborem zásad, ne s tím, co jste zamýšleli napsat. Pokud dvě zařízení hlásí stejnou statickou adresu, má registr kolizi, kterou žádná kontrola certifikátů nikdy neodhalí.