You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Docs: Record TLS bridge protocol/port coverage + non-goals
Add an explicit 'Protocol & port coverage' section to the design spec: the
bridge is HTTPS-inspection (TLS + configured port + trusted CA), not general
egress inspection. Tabulates the no-visibility categories (non-TLS TCP like
SSH/DBs, TLS on non-standard ports, STARTTLS, non-TCP/QUIC, un-MITM-able
pinned/mTLS/ECH), documents why the port gate is load-bearing (ServeConn
assumes HTTP; bridging non-HTTP TLS like LDAPS/SMTPS would break the conn),
and names connection-level egress policy as the backstop. Records envoy-sidecar
bridging and non-HTTP protocols as non-goals.
Signed-off-by: Hai Huang <huang195@gmail.com>
Copy file name to clipboardExpand all lines: authbridge/docs/superpowers/specs/2026-06-12-authbridge-tlsbridge-design.md
+40Lines changed: 40 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,6 +50,46 @@ impersonate the remote origin so the agent's TLS terminates at AuthBridge. That
50
50
> first cut may exist transiently during implementation, but h2 is a prerequisite for enabling MITM by
51
51
> default — it is not a fast-follow.)
52
52
53
+
## Protocol & port coverage (scope — what the bridge does NOT see)
54
+
55
+
The TLS bridge is an **HTTPS-inspection** mechanism, not a general egress-inspection guarantee. It yields
56
+
decrypted, pipeline-visible traffic only when **all** of these hold: the connection is **TCP**, on a
57
+
**configured bridge port** (default `{443, 8443}`), the first bytes are a **TLS ClientHello** record, and the
58
+
agent **trusts the forged CA**. Everything outside that envelope is either tunneled opaquely (still egresses;
59
+
the pipeline sees only `host:port` via the per-connection egress gate) or dropped. The categories with **no
60
+
content visibility**:
61
+
62
+
| Category | Examples | Why blind | Outcome |
63
+
|---|---|---|---|
64
+
|**Non-TLS TCP**| SSH (22); plaintext DB (Postgres 5432, MySQL 3306, Redis 6379, Mongo 27017); SMTP/IMAP/FTP/LDAP; raw/custom TCP; h2c | first bytes ≠ TLS ClientHello → `non-tls`; usually non-bridge port → `port`| tunneled |
65
+
|**TLS on non-standard ports**| LDAPS 636, SMTPS 465, IMAPS 993, AMQPS 5671, MQTTS 8883, DB-over-TLS, custom HTTPS on `:9443` etc. | port not in the bridge set → `port` (configurable) | tunneled |
66
+
|**STARTTLS**| SMTP/IMAP/POP3/LDAP/XMPP/Postgres plaintext→TLS upgrade | connection opens plaintext; the 5-byte peek isn't a ClientHello → `non-tls`| tunneled |
0 commit comments