inline). Identity-based
(role_based) consumers cannot use mTLS.
This is client → TrustGate. It is not how TrustGate authenticates to an upstream MCP
server, and it is not a TrustGuard evaluate-API method.
The NeuralTrust console New Auth form does not offer mTLS. Create the credential
with the Admin API, then attach it to a consumer.
Quick path
- Issue a client certificate from a CA you control. Keep the CA PEM.
POST /v1/gateways/{gateway_id}/authswithtype: mtlsandconfig.mtls.ca_cert.POST /v1/gateways/{gateway_id}/consumers/{id}/auths/{auth_id}on a Static consumer.- Terminate TLS in front of TrustGate (or on the process). If a proxy terminates TLS, set
TRUST_XFCC_FROMto that proxy’s IPs and forwardX-Forwarded-Client-Cert. - Call the proxy or MCP plane with the client certificate. A valid cert and matching allowlists authenticate as that consumer.
What TrustGate checks
Verification usesx509 client-auth EKU against ca_cert. Empty allowlists mean “any
cert from this CA”.
The principal subject is the certificate CN, or the first DNS SAN if CN is empty.
Telemetry records
trustgate.principal.method = mtls.
Auth resolution order on a request: client certificate → bearer token → API key.
How the certificate arrives
TrustGate’s HTTP planes listen in plaintext. The leaf comes from one of:TRUST_XFCC_FROM is a comma-separated list of IPs or CIDRs. If it is empty, TrustGate
ignores XFCC — a client cannot smuggle a cert header.
The header is Envoy-style: a Cert= element whose value is a URL-encoded PEM. Example
shape (truncated):
Create and attach
Admin JWT or machine credentials on the Admin plane:Where it applies
Next step
- Auth — the other credential types.
- Consumers — attach and route.
- API authentication — admin JWT and machine credentials.