carlos / platform Public

edge: disclose the handshake-posture cost of the apps-domain wildcard

Round-2 review catch, and the honest kind: fix round 1 SAID this was
disclosed and it was only ever in the task report — no source file carried
it. With *.<apps-domain> in the parent set, a stranger's one-label unknown
host under the apps domain now completes the TLS handshake (certFor serves
the wildcard before HostPolicy is ever consulted) and reaches the ordinary
404 / -fallback 302, where before it failed at the handshake because
autocert's policy refuses a name that is not a registry route. Nothing is
disclosed that a routed host does not already disclose, and every per-ACCOUNT
parent has had this property since wildcards landed — but it is a real change
on a steering deployment, so it sits beside the CT-log cost in the gating
paragraph rather than in a review thread.

Comment only; gofmt, build, vet and the steering tests clean.
Paul Campbell pushed by paul@keymail.dev 460ac9bc69a1a961bad1c2e095553a668cdc2db7 parent 2ecedf2
1 file changed, +12 −0
  • internal/edge/wildcard.go +12 −0
diff --git a/internal/edge/wildcard.go b/internal/edge/wildcard.go
index bfc128ca3..34d21e482 100644
--- a/internal/edge/wildcard.go
+++ b/internal/edge/wildcard.go
@@ -724,6 +724,18 @@ func newWildcardFromEnv(e *Edge, cache autocert.Cache) *wildcardManager {
// entry, and a change to which cert their existing one-label hosts are
// served from) is not something a dormant feature gets to do.
//
+ // One posture change to state outright, because it is what this parent
+ // COSTS: a stranger's one-label unknown host under the apps domain
+ // (anything.<apps-domain>) now COMPLETES the TLS handshake — certFor
+ // serves the wildcard before HostPolicy is ever consulted — and reaches
+ // the ordinary unknown-host answer, a 404 or a -fallback 302. Before this
+ // parent existed it failed at the handshake instead, because autocert's
+ // policy refuses a name that is not a registry route. Nothing is
+ // disclosed that a routed host does not already disclose, and every
+ // per-ACCOUNT parent has had exactly this property since wildcards
+ // landed — but it is a real change on a steering deployment and belongs
+ // here beside the CT-log entry, not only in a review thread.
+ //
// The parent is derived from e.steeringHost, NOT from this function's own
// appsDomain read: New() normalized the environment once (edge.go,
// steeringProbeHostFromEnv — which trims a trailing dot, and the Getenv