Jak usunąć nieaktualny certyfikat VPN z magazynu zaufania
Usunięcie profilu VPN pozostawia certyfikat w systemie, przeglądarce lub sklepie z aplikacjami. Dopasuj po odcisku palca, usuń najwęższą kopię, a następnie zweryfikuj łańcuch.
Klient VPN jest odinstalowany, profil zniknął z Ustawień, a tunel nadal wstaje ze starymi poświadczeniami. Albo usuwasz go, uruchamiasz ponownie i następnego ranka znajdujesz z powrotem. Żadne z tych zachowań nie oznacza zepsutego przycisku usuwania. Profil to konfiguracja; certyfikat to materiał klucza oraz decyzja o zaufaniu zapisana w magazynie, na który profil tylko wskazuje. To, który z nich trzymasz, decyduje, co musi znaczyć 'usuń'.
Profil to nie certyfikat
W konfiguracji VPN trzy różne obiekty nazywa się 'certyfikatem'. Tożsamość klienta to certyfikat liścia z kluczem prywatnym, a brama używa go, by zdecydować, kim jesteś. Własny certyfikat liścia serwera i jego pośrednik to to, co klient sprawdza przy połączeniu. Kotwica zaufania, zwykle certyfikat główny lub prywatnego CA, jest tym, co w ogóle czyni łańcuch weryfikowalnym. RFC 5280 nazywa je kotwicą zaufania, pośrednikiem i jednostką końcową, a łańcuch jest ważny tylko dopóki każde ogniwo podpisuje ogniwo poniżej.
Usuń tożsamość, a jedno urządzenie traci dostęp. Usuń kotwicę, a każda aplikacja weryfikująca względem tego magazynu traci możliwość sprawdzenia czegokolwiek wydanego pod nim, w tym połączeń niemających nic wspólnego z VPN. Ta asymetria to całe ryzyko: korzeń zainstalowany dla jednej bramy często jest tym samym korzeniem, który podpisuje portal wewnętrzny, serwer poczty lub lustro pakietów. Pamiętaj, którą z dwóch rzeczy trzymasz.
Własność decyduje, czy usunięcie pozostanie usunięciem. Na twoim laptopie tylko ty możesz przywrócić certyfikat. Na urządzeniu zarządzanym profil konfiguracji lub ładunek MDM może zainstalować go ponownie przy następnym meldunku, dlatego 'wraca' i dlatego mocniejsze usuwanie nie pomaga.
Ustal, który magazyn go jeszcze trzyma
Ludzie zaczynają w aplikacji Ustawienia, która jest jedynym miejscem, gdzie certyfikat nie jest przechowywany. Prawdziwe lokalizacje to magazyny zaufania systemu, własny magazyn przeglądarki i prywatny magazyn aplikacji.
| 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 |
Dopasuj po numerze seryjnym lub odcisku palca, nigdy po nazwie wyświetlanej. Nazwy wyświetlane ustawia wystawca certyfikatu i są one wielokrotnie używane: 'Example VPN' może oznaczać trzy certyfikaty z trzema różnymi kluczami, z których jeden jest nadal w codziennym użyciu.
certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256
W macOS narzędzie security podaje te same fakty, a find-identity pokazuje, które certyfikaty nadal mają dołączony klucz prywatny:
security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client
Usuń wąski obiekt, zachowaj wspólnego wystawcę
Wyeksportuj, zanim usuniesz. Bez kopii zapasowej jedynym ratunkiem jest ponowne wydanie, co w prywatnym CA oznacza powrót do osoby zarządzającej PKI. Wyeksportowany PFX jest też tym, co przekazujesz, jeśli usunięcie okaże się błędną decyzją.
certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>
Flaga -user jest tą, którą ludzie przypadkiem pomijają. Bez niej certutil pracuje na magazynie komputera, co oznacza podniesioną powłokę, inny zestaw certyfikatów i promień rażenia obejmujący teraz każde inne konto na maszynie.
W macOS i Linuksie kształt jest ten sam: zidentyfikuj, wyeksportuj, a następnie usuń z najwęższego magazynu, który wyjaśnia objaw. Usunięcie pliku w /usr/local/share/ca-certificates i ponowne uruchomienie update-ca-certificates wystarcza; --fresh pomaga tylko wtedy, gdy dowiązania symboliczne w /etc/ssl/certs są już niespójne. Systemy z rodziny RHEL trzymają kotwice w /etc/pki/ca-trust/source/anchors, gdzie trust anchor --remove robi to samo.
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
Przed usunięciem certyfikatu CA sprawdź, co jeszcze się z nim łańcuchuje. Wylistowanie podmiotów w pakiecie to sprawdzenie w dwóch liniach i odpowiada, czy ta kotwica wykonuje inną pracę:
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
| openssl pkcs7 -print_certs -noout | grep -i example
Usunięcie pliku nie jest unieważnieniem tożsamości
Lokalne usunięcie zabiera jedną kopię. Klucz prywatny może nadal leżeć w p12 dołączonym do starego zgłoszenia, w folderze kopii zapasowych albo na drugim laptopie skonfigurowanym w tym samym czasie. Jeśli to była tożsamość klienta, brama nadal akceptuje każdą kopię tego klucza, dopóki tożsamość nie zostanie odrzucona po stronie serwera.
Dla OpenVPN PKI oznacza to unieważnienie certyfikatu i upewnienie się, że CRL wskazywana przez crl-verify jest aktualna; easyrsa revoke a następnie easyrsa gen-crl to krótka wersja. Dla bramy powiązanej z dostawcą tożsamości wyłącz tam użytkownika lub usuń urządzenie, ponieważ certyfikat jest tylko jednym poświadczeniem w grze. Usunięcie lokalnej kopii, gdy konto pozostaje aktywne, wygląda jak porządki i nią nie jest.
Praca incydentowa ma inną kolejność: najpierw zachowaj certyfikat, jego numer seryjny i zapis unieważnienia, potem usuwaj i unieważniaj. Te zapisy nic nie kosztują i nie wymagają pozostawienia działającego poświadczenia.
Zweryfikuj uściskiem dłoni i drugą aplikacją
Sprawdź łańcuch z zewnątrz, nie z listy magazynu, który właśnie edytowałeś. Magazyn pokazuje twoją zmianę; uścisk dłoni pokazuje wynik.
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
Kod powrotu 0 oznacza, że pozostałe kotwice nadal walidują bramę. Błąd łańcucha po usunięciu kotwicy jest oczekiwanym wynikiem i potwierdza, że trafiłeś w kotwicę w użyciu, a nie w duplikat w magazynie, którego klient nigdy nie czyta. Jeśli połączenie nadal działa, szukaj drugiej kopii, magazynu wbudowanego w aplikację lub przypiętego certyfikatu, wszystko to typowe u klientów przynoszących własną listę zaufania.
Potem przetestuj coś niezwiązanego: witrynę wewnętrzną, klienta poczty, lustro pakietów. To tanio mierzy promień rażenia, zanim zamknie się okno zmian.
- Rola zidentyfikowana jako tożsamość, pośrednik lub kotwica zaufania
- Numer seryjny i odcisk palca zapisane, a kopia wyeksportowana do zatwierdzonej lokalizacji
- Usunięcie wykonane w najwęższym zakresie, który wyjaśnia objaw
- Autoryzacja po stronie serwera unieważniona, gdy osoba lub urządzenie odeszło
- Uścisk dłoni wyjaśniony, a jedna niezwiązana aplikacja przetestowana ponownie
- Ładunek MDM lub profil zarządzania zaktualizowany, inaczej certyfikat wróci
Jeśli certyfikat wrócił po restarcie, zadanie nie jest skończone: coś go posiada i instaluje ponownie. Znajdź tego właściciela, zanim usuniesz ponownie, bo trzecie usunięcie zachowa się dokładnie jak dwa pierwsze.