Docs / Getting started / Trust the CA
Trusting the Crusader CA
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:
| File | What it is |
|---|---|
crusader-root.cer | The public root cert (DER). This is the file you trust / import on Windows. |
crusader-root.pem | The same public root in PEM, written for the macOS / Linux trust tools that expect PEM. |
crusader-root.pfx | Root 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:
| Platform | Trust store | Command | Admin? |
|---|---|---|---|
| macOS | Login keychain | security add-trusted-cert -r trustRoot -k login.keychain-db crusader-root.pem | No (login pw) |
| Windows | CurrentUser\Root | certutil -user -f -addstore Root crusader-root.cer | No |
| Linux · Debian/Ubuntu | /usr/local/share/ca-certificates/ | update-ca-certificates | Yes |
| Linux · Fedora/RHEL | /etc/pki/ca-trust/source/anchors/ | update-ca-trust extract | Yes |
| Linux · Arch | /etc/ca-certificates/trust-source/anchors/ | trust extract-compat | Yes |
| Linux · browser (NSS) | ~/.pki/nssdb · Firefox cert9.db | certutil -d sql:~/.pki/nssdb -A -t "C,," -n "Crusader Root CA" -i crusader-root.pem | No (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.