Research platform-native TLS trust configuration
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 121
- Forks
- 45
- Avg merge
- 18h 43m
- Merged PRs (30d)
- 10
Description
Context
The HTTP host currently builds its TLS connector with with_webpki_roots() in src/http.rs, while Cargo.toml enables the webpki-tokio feature. This embeds the Mozilla root set in every basic-cli application and does not use trust configured by the operating system.
Bundled roots make static applications self-contained and allow public HTTPS to work in minimal environments without a system CA bundle. However, a general-purpose CLI may need to honor:
- enterprise TLS interception and private certificate authorities;
- locally trusted development certificates;
- administrator trust and distrust policy;
- operating-system certificate updates;
- standard CA bundle overrides such as
SSL_CERT_FILEandSSL_CERT_DIR.
Research questions
Investigate and document the tradeoffs between:
- a platform verifier;
- loading native roots into rustls;
- retaining only bundled WebPKI roots;
- combining or falling back between native and bundled roots;
- exposing an application-level custom CA configuration.
The investigation should cover:
- x64 and arm64 macOS, x64 Windows, and x64 and arm64 Linux musl;
- static linking, cross-compilation, binary size, and startup/runtime cost;
- minimal containers or hosts with no usable native certificate store;
- whether fallback to bundled roots could bypass an intentional OS distrust decision;
- actionable errors when roots cannot be loaded or a certificate is rejected;
- private CA, public CA, missing-store, and invalid-store test cases.
Desired outcome
Record a recommended trust policy for basic-cli and the rationale behind it. If a change is recommended, define implementation and test follow-ups that provide predictable behavior on every supported target without requiring users to disable certificate verification.
Keep the public runtime documentation updated with the chosen behavior.
Related work
- #448 documents the current bundled-root behavior.
- #438 tracks stable HTTP transport error classification, including TLS failures.
- #445 tracks dependency advisories and rebuild expectations for statically linked applications.
Contributor 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.
Research direction
Review src/http.rs and Cargo.toml to confirm the current bundled-root setup, then read related issues #448, #438, and #445. Compare the listed trust strategies across the supported targets and specified certificate cases. Done means a documented recommendation, rationale, actionable failure behavior, and implementation and test follow-ups, with runtime documentation updated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, documentation, security
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 32/100