roc-lang / roc-lang/basic-cli

Research platform-native TLS trust configuration

Open
#454 0 comments 0 reactions 0 assignees View on GitHub

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_FILE and SSL_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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.