Vaš VPN klijent je deinstaliran, profil je nestao iz Postavki, a tunel se i dalje podiže sa starim vjerodajnicama. Ili ga izbrišete, ponovno pokrenete i sljedećeg jutra nađete ga vraćenog. Ništa od toga nije pokvaren gumb za brisanje. Profil je konfiguracija; certifikat je ključni materijal plus odluka o povjerenju zabilježena u spremištu na koje profil samo upućuje. Koji od dvaju držite odlučuje što 'uklanjanje' mora značiti.

Profil nije certifikat

Tri različita objekta u VPN postavu nazivaju se 'certifikat'. Identitet klijenta je završni certifikat s privatnim ključem i gateway ga rabi da odluči tko ste. Vlastiti završni certifikat poslužitelja i njegov posrednički certifikat ono je š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 spremištu gubi mogućnost provjere svega izdanog pod njim, uključujući veze koje nemaju nikakve veze s VPN-om. Ta asimetrija cijeli je 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.

Otkrijte koje spremište ga još drži

Ljudi počinju u aplikaciji Postavke, a to je jedino mjesto gdje se certifikat ne pohranjuje. Stvarna mjesta su spremišta povjerenja OS-a, vlastito spremište preglednika i privatno spremište aplikacije.

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

Usporedite po serijskom broju ili otisku, nikad po prikaznom imenu. Prikazna imena postavlja onaj koji je certifikat izdao i ona se ponovno rabe: 'Example VPN' mogu biti tri certifikata s tri različita ključa, od kojih je jedan još u svakodnevnoj uporabi.

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žen 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 koji upravlja PKI-jem. Izvezeni PFX također je 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 spremiš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 spremišta koje objašnjava simptom. Uklanjanje datoteke pod /usr/local/share/ca-certificates i ponovno pokretanje update-ca-certificates dovoljno je; --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 spremišta koje ste upravo uredili. Spremiš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 uporabi, a ne duplikat u spremištu koje klijent nikad ne čita. Ako veza još radi, potražite drugu kopiju, spremiš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.

Povezani članci