Váš klient VPN je odinstalovaný, profil zmizel z Nastavení a tunel se přesto zvedá se starými přihlašovacími údaji. Nebo jej smažete, restartujete a druhý den ráno jej najdete zpět. Ani jedno není rozbité tlačítko mazání. Profil je konfigurace; certifikát je klíčový materiál plus rozhodnutí o důvěře zaznamenané v úložišti, na které profil jen ukazuje. Který z těch dvou držíte, určuje, co musí 'odstranit' znamenat.

Profil není certifikát

V nastavení VPN se 'certifikátem' nazývají tři různé objekty. Identita klienta je koncový certifikát se soukromým klíčem a brána jej používá k rozhodnutí, kdo jste. Vlastní koncový certifikát serveru a jeho zprostředkující certifikát jsou to, co váš klient při připojení kontroluje. Kořen důvěry, obvykle kořenový nebo privátní certifikát CA, je to, co činí řetěz vůbec ověřitelným. RFC 5280 nazývá tyto kořen důvěry, zprostředkující certifikát a koncový subjekt, a řetěz se ověří jen tehdy, dokud každý článek podepisuje ten pod sebou.

Smažte identitu a jedno zařízení ztratí přístup. Smažte kořen a každá aplikace ověřující proti tomuto úložišti ztratí schopnost zkontrolovat cokoli pod ním vydané, včetně spojení, která s VPN nemají nic společného. Tato asymetrie je celé riziko: kořen nainstalovaný pro jednu bránu je často stejný kořen, který podepisuje interní portál, poštovní server nebo zrcadlo balíčků. Pamatujte, který z těch dvou držíte.

Vlastnictví rozhoduje, zda smazání zůstane smazané. Na notebooku, který vlastníte, můžete certifikát vrátit jen vy. Na spravovaném zařízení jej konfigurační profil nebo MDM payload může při další registraci znovu nainstalovat, a proto se 'vrací' a proč tvrdší mazání nepomáhá.

Zjistěte, které úložiště jej stále drží

Lidé začínají v aplikaci Nastavení, což je jediné místo, kde se certifikát neukládá. Skutečná místa jsou úložiště důvěry operačního systému, vlastní úložiště prohlížeče a soukromé úložiště aplikace.

StoreWhat deleting from it affects
Windows CurrentUser\Myyour login session only
Windows LocalMachine Rootevery user and service on the machine
macOS login or System keychainone account, or all of them with sudo
Linux ca-certificates bundlecurl, git, Python, anything using the system bundle
Firefox cert9.dbFirefox only; it does not read the OS store

Porovnávejte podle sériového čísla nebo otisku, nikdy podle zobrazovaného názvu. Zobrazované názvy nastavuje ten, kdo certifikát vydal, a znovu se používají: 'Example VPN' mohou být tři certifikáty se třemi různými klíči, jeden stále v denním provozu.

certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256

V macOS dává nástroj security stejná fakta a find-identity ukazuje, které certifikáty mají stále připojený soukromý klíč:

security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client

Smažte úzký objekt, zachovejte sdíleného vydavatele

Před smazáním exportujte. Bez zálohy je jediná obnova nové vydání, což u privátní CA znamená vrátit se k tomu, kdo provozuje PKI. Exportovaný PFX je také to, co předáte, pokud se odstranění ukáže jako špatné rozhodnutí.

certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>

Přepínač -user je ten, který lidé omylem vynechají. Bez něj certutil pracuje s úložištěm počítače, což znamená zvýšený shell, jinou sadu certifikátů a dosah, který nyní zahrnuje každý další účet na stroji.

V macOS a Linuxu je tvar stejný: identifikujte, exportujte a poté odstraňte z nejužšího úložiště, které vysvětluje příznak. Odstranění souboru pod /usr/local/share/ca-certificates a opětovné spuštění update-ca-certificates stačí; --fresh pomáhá jen tehdy, když jsou symbolické odkazy v /etc/ssl/certs už nekonzistentní. Systémy rodiny RHEL drží kořeny v /etc/pki/ca-trust/source/anchors, kde trust anchor --remove dělá stejnou práci.

sudo security delete-certificate -Z <sha1> /Library/Keychains/System.keychain
sudo rm /usr/local/share/ca-certificates/example-vpn.crt
sudo update-ca-certificates
sudo trust anchor --remove /etc/pki/ca-trust/source/anchors/example-vpn.crt

Před smazáním certifikátu CA zkontrolujte, co dalšího se k němu řetězí. Výpis subjektů v balíku je kontrola na dva řádky a odpovídá, zda tento kořen dělá jinou práci:

openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
  | openssl pkcs7 -print_certs -noout | grep -i example

Smazání souboru není odvolání identity

Místní smazání odstraní jednu kopii. Soukromý klíč může stále sedět v p12 připojeném ke starému tiketu, ve složce záloh nebo ve druhém notebooku nastaveném ve stejnou dobu. Pokud šlo o identitu klienta, brána nadále přijímá jakoukoli kopii tohoto klíče, dokud identita nebude odmítnuta na straně serveru.

Pro OpenVPN PKI to znamená odvolat certifikát a ujistit se, že CRL, na kterou odkazuje crl-verify , je aktuální; easyrsa revoke potom easyrsa gen-crl je krátká verze. U brány vázané na poskytovatele identity tam deaktivujte uživatele nebo odeberte zařízení, protože certifikát je jen jeden z přihlašovacích údajů ve hře. Smazat místní kopii, zatímco účet zůstává aktivní, vypadá jako úklid a není.

Práce s incidentem má jiné pořadí: nejprve uchovejte certifikát, jeho sériové číslo a záznam o odvolání, poté mažte a odvolejte. Tyto záznamy nic nestojí a nevyžadují ponechat funkční přihlašovací údaj na místě.

Ověřte handshake a druhou aplikací

Řetěz kontrolujte zvenčí, ne z výpisu úložiště, které jste právě upravili. Úložiště ukazuje vaši úpravu; handshake ukazuje výsledek.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com \
  -CAfile /etc/ssl/certs/ca-certificates.crt -verify_return_error < /dev/null
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt vpn-gateway.pem

Návratový kód 0 znamená, že zbývající kořeny bránu stále ověřují. Chyba řetězu po odstranění kořene je očekávaný výsledek a potvrzuje, že jste zasáhli používaný kořen, nikoli duplikát v úložišti, které klient nikdy nečte. Pokud spojení stále funguje, hledejte druhou kopii, úložiště zabudované v aplikaci nebo připnutý certifikát, což je běžné u klientů, kteří dodávají vlastní seznam důvěry.

Potom otestujte něco nesouvisejícího: interní web, poštovní klient, zrcadlo balíčků. To levně změří dosah před uzavřením okna změn.

  • Role určena jako identita, zprostředkující certifikát nebo kořen důvěry
  • Sériové číslo a otisk zaznamenány a kopie exportována na schválené místo
  • Smazání provedeno v nejužším rozsahu, který vysvětluje příznak
  • Autorizace na straně serveru odvolána, když osoba nebo zařízení odešly
  • Handshake vysvětlen a jedna nesouvisející aplikace znovu otestována
  • MDM payload nebo profil správy aktualizován, jinak se certifikát vrátí

Pokud se certifikát po restartu vrátí, práce není hotová: něco jej vlastní a znovu jej instaluje. Najděte toho vlastníka, než budete znovu mazat, protože třetí smazání se zachová přesně jako první dvě.

Související články