G. TLS + certificate lifecycle (public-CA direction, private-CA fallback) #139
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
P1
P2
P3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Creatidy/scarcity-router#139
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Child G of #132. Stop making private-CA handling part of the normal end-user path; establish the recommended self-hosted production TLS direction and keep a supported private-CA fallback.
Recommended production direction (design + implement product support, not a vendor control plane)
Private-CA fallback (must not regress)
--ca-cert <path>for worker pair/run/service operations, persisted in worker-local configuration so all subsequent operations reuse it — no hand-writtenSSL_CERT_FILEenvironment hacks, and service units (child F) consume the persisted configuration.verify=false, insecure mode, trust-on-first-use, certificate-error suppression. CA export/trust guidance for external clients is documentation, never an automatic system-trust-store mutation.Worker origin migration
Support moving
srws://192.168.2.13:8790→srws://scarcity-router.creatidy.com:8790without destructive re-pairing when the existing worker identity remains valid. Before persisting a migrated origin: verify TLS to the new origin AND verify the existing device identity/authentication; only then commit the origin change.Out of scope
No vendor control-plane/domain dependency; no ZCode-side changes (a concise reproducible report on the observed Custom-certificate propagation failure is prepared as an owner-review artifact only — not published without owner approval; Scarcity Router must not depend on any ZCode fix).
Tests
CA persistence across pair/run/service; origin migration verification order (verify-then-commit; refusal paths); unit/UX integration with child F; negative tests (no bypass modes reachable, credentials never persisted/logged); documentation of the recommended deployment path.
Security classification
Security-critical (TLS, credentials, identity migration): GLM-5.3-Flash review mandatory; Daybreak security review when available, else
SECURITY_REVIEW_UNAVAILABLEwith the gate open at the human decision point. UX assessment mandatory.Complexity boundary
Worker config/store +
worker_client.pyflags + deployment tooling/docs; server CLI unchanged except doc guidance; ~3 test files. Budget: 120 min wall clock.Additive scope note (D-056, PR #147 remediation — the frozen scope text above is unchanged; this assigns newly accepted architecture into the existing deployment tooling/docs scope rather than creating a new issue):
This child now also implements the accepted same-host container plaintext transport tier from D-056 (
docs/decisions.md):internal: trueDocker network, no externally published plaintext application port). This includes the currently unsupported Docker bridge + loopback-publish case (-p 127.0.0.1:8787:8787), which today fails because published traffic reaches the container on a non-loopback interface where plaintext binds are refused.0.0.0.0plaintext listener. An explicit deployment/local-transport mode is expected; it must be difficult to accidentally turn a LAN-facing endpoint into plaintext. Worker-protocol transport is unchanged.Details: D-056 in
docs/decisions.md, "Client-transport tiers (D-056)" indocs/security.md, PR #147.Additive scope note #2 (D-056, PR #147 — complementing the same-host container-tier note above; frozen scope text unchanged):
D-056 also fixes the local-first normal path that this child's documentation and UX must present: plain-HTTP loopback (
http://localhost:8787/v1) is a SUPPORTED local transport and a normal certificate-free configuration (D-056 pt 8A / pt 9). Local operation must not be documented or UX-framed as requiring certificate setup, and a private CA is never required for ordinary localhost operation. The remote normal UX stays public FQDN + publicly trusted certificate + automated renewal, with private CA as the advanced fallback (pt 8D — already this child's primary direction). These are documentation/UX consequences of D-056 only; no listener-behavior change beyond what the container-tier note above assigns.kilo referenced this issue2026-10-01 01:48:36 +00:00
2026-10-27 owner backlog disposition (D-083, governance issue #228). This issue remains open with its
wontfixlabel unchanged; history preserved. Its still-required obligations are re-homed to active successor #224 (same-host container tier B, persisted/validated CA trust, certificate lifecycle, origin migration — security-critical), which carries every retained invariant: no plaintext LAN/WAN exposure, whole-composed-listener property with proven deployment-boundary enforcement, noverify=false/TOFU/bypass, no TLS/CSRF/credential weakening. The former #186 → #139 native dependency was removed as stale. See D-083 indocs/decisions.md.