Skip to content

Commit a8b4db1

Browse files
committed
Add XFCC header format section with envoy format recommendation
1 parent b14e302 commit a8b4db1

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

toc/rfc/rfc-draft-app-to-app-mtls-routing.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,29 @@ GoRouter gains the ability to require client certificates for specific domains w
8787
- `only_trust_client_ca_certs: true`: only Instance Identity CA is trusted
8888
- `forwarded_client_cert: sanitize_set`: XFCC header cannot be spoofed
8989

90+
### XFCC Header Format
91+
92+
GoRouter currently forwards client certificates in raw base64 format. For mTLS app-to-app routing, a new compact [Envoy-style format](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-client-cert) is recommended:
93+
94+
| Format | Size | Parsing | Description |
95+
|--------|------|---------|-------------|
96+
| `raw` | ~1.5KB | Certificate decode required | Full base64-encoded certificate |
97+
| `envoy` | ~300 bytes | String parsing only | `Hash=<sha256>;Subject="<DN>"` |
98+
99+
The `envoy` format extracts identity directly from the Subject DN (e.g., `OU=app:guid`) without certificate parsing, reducing both bandwidth and CPU overhead.
100+
101+
Configuration:
102+
```yaml
103+
router:
104+
mtls_domains:
105+
- domain: "*.apps.mtls.internal"
106+
ca_certs: "((diego_instance_identity_ca.certificate))"
107+
forwarded_client_cert: sanitize_set
108+
xfcc_format: envoy # recommended for mTLS app-to-app
109+
```
110+
111+
Operators should use `raw` format if applications need the full certificate (e.g., for signature verification). The default is `raw` for backward compatibility.
112+
90113
### Phase 1b: Authorization Enforcement
91114

92115
GoRouter enforces access control at the routing layer using a default-deny model, matching the design of container-to-container network policies.

0 commit comments

Comments
 (0)