You find a root certificate that should not be there, and the first question is what it can impersonate. The honest answer depends on which software consults that store and how your VPN verifies its gateway. A browser, a package manager and a VPN client with a pinned fingerprint do not necessarily share a trust decision. Map the validators before deciding the scope.

A root in the system store is not a universal key

Installing a root makes certificates signed by that key acceptable to programs that use the affected store. It does not automatically make them acceptable everywhere, because some applications ship their own bundle or check a pinned value. Nor does it prove that someone ran code on the machine; a trust change is one capability among several. Treat the certificate as a finding to scope rather than as the whole incident.

The store matters as much as the certificate: a user-level bundle and a system-wide anchor reach different consumers.

Map each validator and its trust source

Write down every component that validates certificates for the affected workflows: browser, package manager, mail client, VPN. Then find the trust source each one reads.

ls /usr/local/share/ca-certificates
trust list | grep -i -E "vpn|corp"

The directory listing shows locally added anchors on Debian-style systems, and the trust list shows what the system store currently exposes. A browser with its own store will not appear there, and a Java or Python application may use yet another bundle. Record which entries are expected and which are not, using the fingerprint rather than the display name alone. That list is what an incident responder needs before deleting anything.

Check the VPN's own peer validation

A VPN with a private CA or an explicit fingerprint evaluates the gateway against its own configuration. Compare what the client expects with what the gateway presents.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | openssl x509 -noout -fingerprint -sha256 -subject

The output gives the SHA-256 fingerprint and subject of the certificate the endpoint presents, which you can compare with the configured value. OpenVPN's peer-fingerprint option performs that comparison for the tunnel without requiring the system store to accept the signer. That independence is useful for the tunnel and says nothing about the browser. It also does not help if the expected fingerprint was copied from the suspicious connection in the first place.

Scope the incident beyond the certificate

Use the device owner's process to remove unauthorised anchors and to look for the changes that usually accompany them: new services, modified clients, altered proxy settings. On a managed machine, confirm the legitimate configuration before deleting material other software depends on. For every validator, record where its trust comes from, which identity it expects, and how you confirmed the current configuration is correct. A working tunnel after cleanup is one observation, not proof that the endpoint is clean.

Then re-test the workflows that used the store, because removing an anchor can break an internal service that legitimately relied on it. Recovery is finished when the expected trust relationships work and the unexpected ones do not.

Artiglyn mynjee