Expose project-scoped private-CA trust for Proxy, Repeater, and Intruder
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 45/100
Research direction
Start with app/proxy_control.rs, app/repeater.rs::ensure_repeater, app/intruder/controller.rs, and proxy/tls.rs to trace where upstream trust roots are passed and built. Use synthetic traffic and local TLS tests to check the listed acceptance cases across Proxy, Repeater, and Intruder. Done means project-scoped CA import, listing, removal, and persistence work with hostname verification enabled, and the testing and removal steps are documented.
Written by the indexing model from the issue text.
Description
Review baseline
Source review of main at 47e7fce3106584f4f333db4eada6dcd0c33c8bbe (2026-11-05), including unified history (#169). This is not a native-app runtime reproduction. Use synthetic traffic for tests and issue evidence.
Workflow gap and evidence
Private-CA labs/internal applications cannot be configured through the desktop trust UI. The transport supports extra_roots_pem, but app/proxy_control.rs, app/repeater.rs::ensure_repeater, and app/intruder/controller.rs pass empty vectors. proxy/tls.rs builds upstream verification roots separately from Perseid's interception CA.
Acceptance criteria
- Import/list/remove additional upstream CA certificates for the active project; show certificate subjects/fingerprints and useful PEM validation errors.
- Apply a consistent trust policy to proxied HTTPS and direct Repeater/Intruder sends, rebuilding relevant clients safely on change.
- Keep hostname and certificate verification enabled; importing a root must not enable global insecure TLS or modify OS/browser trust.
- Distinguish upstream trust anchors from Perseid's interception CA/key in the UI/docs.
- Persist only the intended trust configuration with compatible project defaults; switching projects cannot retain another project's added trust.
- Local TLS tests cover private CA accepted after import, unknown CA rejected, hostname mismatch rejected, root removal, and project switch across all three tools.
- Document how to test internal HTTPS targets and how to remove trust.
Non-goals: mTLS client identities, upstream HTTP/SOCKS routing, or arbitrary SNI overrides; these need separate designs.
- Dominant language
- Rust
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 12m
- Merged PRs (30d)
- 137
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from andyintheshell/perseid
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 85/100
andyintheshell/perseid#73 · 2 comments ·
Maintainers usually reply within 1 day
-
documentation focus: pro parity priority: p3
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#192 ·
Maintainers usually reply within 1 day
-
enhancement focus: collaborator priority: p0
Difficulty 5/5 Over a week Newbie friendliness 25/100
andyintheshell/perseid#191 · 1 comment ·
Maintainers usually reply within 1 day
-
enhancement focus: community parity focus: usability priority: p2
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#178 ·
Maintainers usually reply within 1 day
-
enhancement focus: community parity focus: usability priority: p1
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#177 ·
Maintainers usually reply within 1 day
All issues in andyintheshell/perseid
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
RustCrypto/utils#1597 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
max-sixty/worktrunk#4727 · 7 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
follow-up
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
carrick-sh/carrick#1859 ·
Maintainers usually reply within 1 day