Docs / Getting started / Trust the CA

Guide Getting started

Trusting the Crusader CA

~8 min · macOS · Windows · Linux · Free

The short version. To read HTTPS, Crusader signs each site with its own root CA — your machine has to trust that root first. The fastest path is the one-click Install CA button, which imports the cert into the right per-OS store for you. If you'd rather do it by hand, the public cert lives at ~/.crusader/ca/crusader-root.cer (there is no Export CA button — use that file). Each OS keeps its trust store in a different place, and on Linux the browser keeps a separate store from the system. When even a trusted user CA gets rejected — HSTS-preloaded sites do this — skip trust entirely with Open test browser, a Chromium-family browser that pins the Crusader root with zero install.

01Why you trust a CA

Crusader is a man-in-the-middle proxy. To read and rewrite HTTPS, it terminates TLS, then re-encrypts to the client with a leaf certificate it mints on the fly — one per host, signed by a root CA that Crusader generates per machine. Your browser (or app) will reject those leaf certs with a TLS error until it trusts the Crusader root. Trust the root once and every site Crusader proxies validates cleanly.

The root is created the first time Crusader needs it: subject CN=Crusader Root CA, O=Crusader Security, OU=HTTPS Interception, a 10-year RSA-2048 root, with per-host SHA-256 leaves. It never leaves your machine, and the private key stays in a password-protected, 0600 file.

Authorized testing only. Trusting an intercept CA lets Crusader read all TLS traffic that flows through it — install it on machines you own or are authorized to test, and remove it when you're done.

02Where the CA lives

Everything sits under ~/.crusader/ca/ (relocate the whole workspace with the CRUSADER_HOME environment variable). Three files, and only one of them is the one you import:

FileWhat it is
crusader-root.cerThe public root cert (DER). This is the file you trust / import on Windows.
crusader-root.pemThe same public root in PEM, written for the macOS / Linux trust tools that expect PEM.
crusader-root.pfxRoot cert and private key, password-protected (0600 on Unix). Never import this — it's Crusader's signing key, not for trust.

There is no "Export CA" button in Crusader. To get the public certificate, point your OS or browser at ~/.crusader/ca/crusader-root.cer (or crusader-root.pem), click Install CA, or skip trust with Open test browser.

03The one-click path: Install CA

The first-run wizard — titled "Trust the Crusader certificate" — offers Install certificate and Open test browser. You'll also find Install CA as step 03 of the intercept setup overlay ("Make interception predictable."). Click it and Crusader imports the public root into the correct store for your OS, with whatever native trust prompt that store requires.

Under the hood, Install CA runs exactly the manual commands documented below — the same ones you'd type yourself. The per-OS sections show what it does, in case you're scripting a fresh VM, a CI runner, or a locked-down host where you'd rather run the step by hand. From the CLI, the equivalent is:

# one-click trust, headless — same store, same prompts
crusader proxy install-ca

# just print the path to the public cert
crusader proxy cert-path

After trust succeeds the wizard confirms "You're ready to intercept HTTPS." If you'd rather not trust the root system-wide at all, jump to the test browser.

04Manual — macOS

macOS trust goes into your login keychain, so it needs no admin — just your login password at the prompt. Install CA uses the PEM copy and marks it as a trusted root:

# login keychain — prompts for your login password, no sudo
security add-trusted-cert -r trustRoot \
  -k ~/Library/Keychains/login.keychain-db \
  ~/.crusader/ca/crusader-root.pem

That trusts the root for every app that reads the system/login trust roots, Safari and Chrome included. Firefox keeps its own store (see the Linux section's NSS notes — the same applies on macOS Firefox).

Apple Silicon: ship and run the osx-x64 build under Rosetta 2 — a native osx-arm64 build isn't available yet. Proxy and CA trust work normally either way.

05Manual — Windows

Windows trust goes into the current user's Root store (CurrentUser\Root) — no admin required. Windows shows its own security-warning dialog the first time you add a root; accept it. This uses the DER .cer file:

# CurrentUser\Root — no elevation, shows the Windows trust prompt
certutil -user -f -addstore Root %USERPROFILE%\.crusader\ca\crusader-root.cer

That covers everything on Windows that uses the OS trust store — Chrome, Edge, and the WebView-based clients. As elsewhere, Firefox carries its own store and isn't covered by this command.

06Manual — Linux (system + browser)

Linux is two stores, not one. The system trust store is shared OS-wide; browsers (Chrome, Chromium, Firefox) keep their own NSS database and ignore the system store. You usually need both.

System trust (needs admin)

Crusader elevates via pkexec/sudo, drops the cert in the distro's anchor directory, then runs the distro's update command. The path and command differ per family:

# Debian / Ubuntu
sudo cp ~/.crusader/ca/crusader-root.pem \
  /usr/local/share/ca-certificates/crusader-root.crt
sudo update-ca-certificates

# Fedora / RHEL
sudo cp ~/.crusader/ca/crusader-root.pem \
  /etc/pki/ca-trust/source/anchors/crusader-root.pem
sudo update-ca-trust extract

# Arch
sudo cp ~/.crusader/ca/crusader-root.pem \
  /etc/ca-certificates/trust-source/anchors/crusader-root.pem
sudo trust extract-compat

Browser trust (NSS — needs a browser restart)

Chrome, Chromium, and Firefox read an NSS database under your home directory, not the system store. Add the root there with certutil (from libnss3-tools / nss-tools — Crusader auto-installs it if missing):

# Chrome / Chromium NSS store (~/.pki/nssdb)
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," \
  -n "Crusader Root CA" -i ~/.crusader/ca/crusader-root.pem

Firefox keeps a per-profile cert9.db; Crusader also handles the snap/flatpak NSS locations. After adding the cert you must restart the browser for it to pick up the new root.

System-trusted is not browser-trusted. On Linux, installing into the system store does not make Chrome or Firefox trust the root — they read NSS. Crusader surfaces a note telling you whether the browser store was updated, so you know which half is done. If your browser still errors after a successful system install, the NSS step is the missing piece.

07Per-OS cheat sheet

The store and command Install CA uses on each platform, at a glance:

PlatformTrust storeCommandAdmin?
macOSLogin keychainsecurity add-trusted-cert -r trustRoot -k login.keychain-db crusader-root.pemNo (login pw)
WindowsCurrentUser\Rootcertutil -user -f -addstore Root crusader-root.cerNo
Linux · Debian/Ubuntu/usr/local/share/ca-certificates/update-ca-certificatesYes
Linux · Fedora/RHEL/etc/pki/ca-trust/source/anchors/update-ca-trust extractYes
Linux · Arch/etc/ca-certificates/trust-source/anchors/trust extract-compatYes
Linux · browser (NSS)~/.pki/nssdb · Firefox cert9.dbcertutil -d sql:~/.pki/nssdb -A -t "C,," -n "Crusader Root CA" -i crusader-root.pemNo (restart browser)

08The zero-install path: test browser

Sometimes you don't want to touch the system trust store at all — a shared box, a quick test, or a site that refuses a user-installed CA on principle. HSTS-preloaded sites (banks, Google, att.com) ship a hard pin in the browser binary and will reject even a correctly trusted user root. That's not a Crusader bug; it's the point of HSTS preload.

For those, use Open test browser (the primary button in the CA wizard). It launches an installed Chromium-family browser in an isolated, throwaway profile under your temp directory, routes it through Crusader, and pins the Crusader root by its SHA-256 SPKI rather than installing anything:

# what Open test browser does, conceptually
chrome \
  --user-data-dir=<temp profile> \
  --proxy-server=127.0.0.1:<port> \
  --ignore-certificate-errors-spki-list=<crusader root SPKI>

Because the trust is scoped to exactly the Crusader root (not "ignore all cert errors") and applies only to this disposable profile, it's safe to use and leaves your real browser and system stores untouched. It auto-starts the proxy if it's off, and it works on HSTS-preloaded sites where store-based trust can't. This is the easiest path overall.

Chromium-family only. The test browser supports Chrome, Chromium, Edge, and Brave. Despite some UI copy that mentions Firefox, Firefox is not actually launched by this feature — for Firefox, use the NSS / keychain trust steps above instead.

Next

Want a guide that isn't here yet? Email hello@crusaderproxy.com.