Proč kopírování ca.key do každého VPN klienta ničí CA
Klient ověřuje veřejný certifikát CA; klíč, který podepisuje, nikdy nepotřebuje. Kopírování ca.key do každého zařízení dává právo vydávat certifikáty každému, kdo si jednu kopii vezme.
Někde v pokynech k instalaci se celý adresář zkopíruje na každý notebook, protože to bylo snazší než rozhodnout, které soubory tam patří. Ten adresář obsahuje ca.key a ve chvíli, kdy se dostane na druhé zařízení, přestává být certifikační autorita autoritou. Každý držitel teď může vydávat identity, kterým bude zbytek sítě důvěřovat.
To zmatení stojí za jedno vyjasnění, protože oba soubory vypadají podobně a dělají opačné věci.
Ověřovací materiál a podepisovací materiál
Klient potřebuje veřejný certifikát CA, aby ověřil, že certifikát předložený protistranou podepsala tato autorita. To je úloha ověření a nepotřebuje žádné tajemství. Podepsat certifikát protistrany je jiná úloha, kterou jednou provede ten, kdo CA provozuje, soukromým klíčem, který nikdy neopustí své chráněné úložiště. Držet tyto dvě úlohy oddělené je celý smysl dodávání dvou souborů.
Takže ca.crt patří do profilu a ca.key nepatří nikam poblíž. Názvy souborů jsou konvence, ne záruka, a proto se typ musí prohlédnout, ne odvodit z názvu.
Architektura s mezilehlou CA nebo online službou vydávání není výjimkou. Je to standardní způsob, jak držet možnost podpisu mimo koncové body a přitom vydávat certifikáty zařízení ve velkém.
Co má klient prokázat vlastním klíčem
Každé zařízení dostane vlastní pár klíčů a vlastní certifikát, jednou podepsaný CA. Klient předloží tento certifikát a prokáže vlastnictví odpovídajícího soukromého klíče a server rozhodne, zda ho přijme. To je identita, která se odvolá, když se notebook ztratí.
Kontrast je nejdůležitější po krádeži. S identitami pro jednotlivá zařízení se jeden odhalený klient odstraní odvoláním nebo vyřazením protistrany a zbytek flotily funguje dál.
S uniklým klíčem autority takto postupovat nelze. Každý certifikát, který kdy podepsal nebo mohl podepsat, se stává podezřelým, takže reakcí je výměna důvěry, ne jedno odvolání. To je projekt, ne tiket.
| File | Role | Belongs on |
|---|---|---|
ca.crt | Public certificate used to verify signatures | Every client profile |
ca.key | Private key that issues certificates | Protected CA storage only |
| client key pair | Proves one device's identity | That device alone |
Přečtěte si soubor, než ho někam zkopírujete
Dva příkazy vám řeknou, jaký druh objektu držíte, aniž by vytiskly jakékoli tajemství. První uvádí subjekt a příznak CA u certifikátu; druhý ověří klíč a oznámí jeho typ. Spusťte oba na souborech v balíku, který se chystáte distribuovat. Cokoli, co se ověří jako soukromý klíč, do klientského adresáře nepatří.
openssl x509 -in ca.crt -noout -subject -ext basicConstraints openssl pkey -in ca.key -noout -check
Pokud druhý příkaz uspěje u souboru, který leží v klientském balíku, zastavte se a považujte balík za kompromitovaný. Výstup, který říká, že klíč je platný, také říká, že je přítomný, a přítomnost je celý problém.
Všimněte si i opačného směru: klientský profil oprávněně obsahuje vlastní soukromý klíč tohoto klienta. Smazání každého nalezeného klíče přeruší spojení, aniž by cokoli zlepšilo, takže objekt je nutné před odstraněním identifikovat.
Zvládnutí klíče, který jste už distribuovali
Nepředpokládejte, že smazání místní kopie odvrátí expozici. Kdokoli soubor měl, ho mohl zkopírovat, a bezpečný předpoklad je, že to udělal. Postupujte podle incidentního procesu provozovatele a vyměňte kotvu důvěry, znovu vydáním certifikátů zařízení pod novou CA.
Pak změňte balení, které problém vytvořilo. Posílejte výpis adresáře s explicitním seznamem povolených souborů, držte klíč CA na stroji, který se nikdy nepřipojí ke klientské flotile, a zaznamenejte, který systém ho uchovává.
Pokud musí autorita vydávat často, přesuňte podepisování za službu nebo mezilehlou autoritu s úzkým rozsahem a krátkou platností. Budoucí chyba tak odhalí jen část vydávání, ne kořen důvěry celého nasazení.