Kako ukloniti zastarjeli VPN certifikat iz skladišta povjerenja
Brisanje VPN profila ostavlja certifikat u OS-u, pregledniku ili trgovini aplikacija. Usporedite po otisku, izbrišite najužu kopiju, pa provjerite lanac.
Vaš VPN klijent je deinstaliran, profil je nestao iz Postavki, a tunel se i dalje podiže sa starim vjerodajnicama. Ili ga izbrišete, restartate i sljedećeg jutra ga nađete vraćenog. Ni jedno nije pokvaren gumb za brisanje. Profil je konfiguracija; certifikat je ključni materijal plus odluka o povjerenju zabilježena u skladištu na koje profil samo pokazuje. Koji od dvaju držite odlučuje što 'uklanjanje' mora značiti.
Profil nije certifikat
Tri različita objekta u VPN postavci nazivaju se 'certifikat'. Identitet klijenta je završni certifikat s privatnim ključem i gateway ga koristi da odluči kdo ste. Vlastiti završni certifikat poslužitelja i njegov posrednički certifikat su ono što vaš klijent provjerava pri povezivanju. Sidro povjerenja, obično korijenski ili privatni CA certifikat, ono je što lanac uopće čini provjerljivim. RFC 5280 naziva ih sidrom povjerenja, posredničkim certifikatom i završnim entitetom, a lanac se potvrđuje samo dok svaka karika potpisuje onu ispod sebe.
Izbrišite identitet i jedan uređaj gubi pristup. Izbrišite sidro i svaka aplikacija koja provjerava prema tom skladištu gubi mogućnost provjere svega izdanog pod njim, uključujući veze koje nemaju nikakve veze s VPN-om. Ta asimetrija je cijeli rizik ovdje: korijen instaliran za jedan gateway često je isti korijen koji potpisuje interni portal, poštanski poslužitelj ili zrcalo paketa. Zapamtite koji od dvaju držite.
Vlasništvo odlučuje hoće li brisanje ostati obrisano. Na prijenosniku koji posjedujete samo vi možete vratiti certifikat. Na upravljanom uređaju konfiguracijski profil ili MDM payload može ga ponovno instalirati pri sljedećoj prijavi, zato se 'vraća' i zato jače brisanje ne pomaže.
Pronađite koje skladište ga još drži
Ljudi počinju u aplikaciji Postavke, a to je jedino mjesto gdje se certifikat ne pohranjuje. Stvarna mjesta su skladišta povjerenja OS-a, vlastito skladište preglednika i privatno skladište aplikacije.
| Store | What deleting from it affects |
|---|---|
| Windows CurrentUser\My | your login session only |
| Windows LocalMachine Root | every user and service on the machine |
| macOS login or System keychain | one account, or all of them with sudo |
| Linux ca-certificates bundle | curl, git, Python, anything using the system bundle |
| Firefox cert9.db | Firefox only; it does not read the OS store |
Usporedite po serijskom broju ili otisku, nikad po prikaznom imenu. Prikazna imena postavlja onaj tko je certifikat izdao i ona se ponovno koriste: 'Example VPN' mogu biti tri certifikata s tri različita ključa, od kojih je jedan još u svakodnevnoj upotrebi.
certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256
Na macOS-u security alat daje iste činjenice, a find-identity pokazuje koji certifikati još imaju pridruženi privatni ključ:
security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client
Izbrišite uski objekt, zadržite zajedničkog izdavatelja
Izvezite prije brisanja. Bez sigurnosne kopije jedini je oporavak ponovno izdavanje, što na privatnom CA znači vraćanje onome tko upravlja PKI-jem. Izvezeni PFX je i ono što predajete ako se uklanjanje pokaže pogrešnom odlukom.
certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>
Ova -user oznaka je ona koju ljudi slučajno izostave. Bez nje certutil radi na skladištu stroja, što znači povišenu ljusku, drugačiji skup certifikata i radijus udara koji sada uključuje svaki drugi račun na stroju.
Na macOS-u i Linuxu oblik je isti: identificirajte, izvezite, pa uklonite iz najužeg skladišta koje objašnjava simptom. Uklanjanje datoteke pod /usr/local/share/ca-certificates i ponovno pokretanje update-ca-certificates je dovoljno; --fresh pomaže samo kad su simboličke veze u /etc/ssl/certs već nedosljedne. Sustavi obitelji RHEL drže sidra u /etc/pki/ca-trust/source/anchors, gdje trust anchor --remove radi isti posao.
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
Prije brisanja CA certifikata provjerite što se još lančano veže na njega. Popisivanje subjekata u paketu provjera je u dva retka i odgovara obavlja li to sidro drugi posao:
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
| openssl pkcs7 -print_certs -noout | grep -i example
Brisanje datoteke nije opoziv identiteta
Lokalno brisanje uklanja jednu kopiju. Privatni ključ može još stajati u p12 priloženom starom tiketu, mapi sigurnosne kopije ili drugom prijenosniku postavljenom u isto vrijeme. Ako je to bio identitet klijenta, gateway nastavlja prihvaćati svaku kopiju tog ključa dok identitet ne bude odbijen na strani poslužitelja.
Za OpenVPN PKI to znači opoziv certifikata i osiguranje da je CRL na koji upućuje crl-verify ažuran; easyrsa revoke zatim easyrsa gen-crl kratka je verzija. Za gateway vezan uz davatelja identiteta onemogućite korisnika ili uklonite uređaj tamo, jer je certifikat samo jedna vjerodajnica u igri. Brisanje lokalne kopije dok račun ostaje aktivan izgleda kao čišćenje i nije.
Rad na incidentu ima drugačiji redoslijed: prvo sačuvajte certifikat, njegov serijski broj i zapis o opozivu, zatim brišite i opozovite. Ti zapisi ništa ne koštaju i ne zahtijevaju da radna vjerodajnica ostane na mjestu.
Provjerite rukovanjem i drugom aplikacijom
Provjerite lanac izvana, ne iz popisa skladišta koje ste upravo uredili. Skladište pokazuje vašu izmjenu; rukovanje pokazuje rezultat.
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
Povratni kod 0 znači da preostala sidra još potvrđuju gateway. Pogreška lanca nakon uklanjanja sidra očekivani je ishod i potvrđuje da ste pogodili sidro u upotrebi, a ne duplikat u skladištu koje klijent nikad ne čita. Ako veza još radi, potražite drugu kopiju, skladište ugrađeno u aplikaciju ili prikvačeni certifikat, sve često u klijentima koji isporučuju vlastiti popis povjerenja.
Zatim testirajte nešto nepovezano: interni site, poštanski klijent, zrcalo paketa. To jeftino mjeri radijus udara prije nego se zatvori prozor promjena.
- Uloga identificirana kao identitet, posrednički certifikat ili sidro povjerenja
- Serijski broj i otisak zabilježeni, a kopija izvezena na odobrenu lokaciju
- Brisanje obavljeno u najužem opsegu koji objašnjava simptom
- Autorizacija na strani poslužitelja opozvana kad je osoba ili uređaj otišao
- Rukovanje objašnjeno i jedna nepovezana aplikacija ponovno testirana
- MDM payload ili profil upravljanja ažuriran, inače se certifikat vraća
Ako se certifikat vrati nakon restarta, posao nije gotov: nešto ga posjeduje i ponovno instalira. Nađite tog vlasnika prije ponovnog brisanja, jer će se treće brisanje ponašati točno kao prva dva.