Skip to content

Commit f1b863d

Browse files
committed
Add new BackendTLSPolicy configuration options to documentation:
- Gateway backendTLS field - subjectAltNames field - options field The documentation includes descriptions of each new field along with their purpose, usage constraints and reference links.
1 parent 72103a7 commit f1b863d

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

site-src/api-types/backendtlspolicy.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ to prevent the complications involved with sharing trust across namespace bounda
2828

2929
All Gateway API Routes that point to a referenced Service should respect a configured BackendTLSPolicy.
3030

31+
## Gateway Backend TLS Configuration
32+
33+
??? example "Experimental Channel since v1.1.0"
34+
35+
These fields were added to Gateway in `v1.1.0`
36+
The Gateway specification now includes a new backendTLS field that allows configuration of TLS settings when the Gateway connects to backends. This enables specification of client certificates that the Gateway should use when establishing TLS connections with backends. The configuration includes:
37+
38+
- [BackendTLS][backendTLS] - Defines the TLS configuration for Gateway-to-backend connections
39+
- [ClientCertificateRef][clientCertificateRef] - References an object containing a Client Certificate and its associated private key
40+
3141
## Spec
3242

3343
The specification of a [BackendTLSPolicy][backendtlspolicy] consists of:
@@ -36,19 +46,21 @@ The specification of a [BackendTLSPolicy][backendtlspolicy] consists of:
3646
- [Validation][validation] - Defines the configuration for TLS, including hostname, CACertificateRefs, and
3747
WellKnownCACertificates.
3848
- [Hostname][hostname] - Defines the Server Name Indication (SNI) that the Gateway uses to connect to the backend.
49+
- [SubjectAltNames][subjectAltNames] - Specifies one or more Subject Alternative Names that the backend certificate must match. When specified, the certificate must have at least one matching SAN. This field enables separation between SNI (hostname) and certificate identity validation.
3950
- [CACertificateRefs][caCertificateRefs] - Defines one or more references to objects that contain PEM-encoded TLS certificates,
4051
which are used to establish a TLS handshake between the Gateway and backend Pod. Either CACertificateRefs or
4152
WellKnownCACertificates may be specified, but not both.
4253
- [WellKnownCACertificates][wellKnownCACertificates] - Specifies whether system CA certificates may be used in the TLS
4354
handshake between the Gateway and backend Pod. Either CACertificateRefs or WellKnownCACertificates may be specified, but not both.
55+
- [Options][options] - A map of key/value pairs enabling extended TLS configuration for each implementation, similar to the TLS options field on Gateway Listeners.
4456

4557
The following chart outlines the object definitions and relationship:
4658
```mermaid
4759
flowchart LR
4860
backendTLSPolicy[["<b>backendTLSPolicy</b> <hr><align=left>BackendTLSPolicySpec: spec<br>PolicyStatus: status</align>"]]
49-
spec[["<b>spec</b><hr>PolicyTargetReferenceWithSectionName: targetRefs <br> BackendTLSPolicyValidation: tls"]]
61+
spec[["<b>spec</b><hr>PolicyTargetReferenceWithSectionName: targetRefs <br> BackendTLSPolicyValidation: tls<br>map[string]string: options"]]
5062
status[["<b>status</b><hr>[ ]PolicyAncestorStatus: ancestors"]]
51-
validation[["<b>tls</b><hr>LocalObjectReference: caCertificateRefs<br>wellKnownCACertificatesType: wellKnownCACertificates/<br>PreciseHostname: hostname"]]
63+
validation[["<b>tls</b><hr>LocalObjectReference: caCertificateRefs<br>wellKnownCACertificatesType: wellKnownCACertificates/<br>PreciseHostname: hostname<br>[]SubjectAltName: subjectAltNames"]]
5264
ancestorStatus[["<b>ancestors</b><hr>AncestorRef: parentReference<br>GatewayController: controllerName<br>[]Condition: conditions"]]
5365
targetRefs[[<b>targetRefs</b><hr>]]
5466
service["<b>service</>"]
@@ -111,6 +123,30 @@ Also note:
111123

112124
- Wildcard hostnames are not allowed.
113125

126+
#### Subject Alternative Names
127+
128+
??? example "Experimental Channel since v1.2.0"
129+
130+
This field was added to BackendTLSPolicy in `v1.2.0`
131+
The subjectAltNames field enables separation between the SNI (specified by hostname) and certificate identity validation. When specified, the certificate served by the backend must have at least one Subject Alternative Name matching one of the specified values. This is particularly useful for SPIFFE implementations where URI-based SANs may not be valid SNIs.
132+
Subject Alternative Names can be of two types:
133+
134+
- Hostname: DNS name format
135+
- URI: URI format (e.g., SPIFFE ID)
136+
137+
#### TLS Options
138+
139+
??? example "Experimental Channel since v1.2.0"
140+
141+
This field was added to BackendTLSPolicy in `v1.2.0`
142+
The options field allows specification of implementation-specific TLS configurations, similar to the TLS options field on Gateway Listeners. This can include:
143+
144+
- Vendor-specific mTLS automation configuration
145+
- Minimum supported TLS version restrictions
146+
- Supported cipher suite configurations
147+
148+
Implementation-specific definitions must use domain-prefixed names (e.g., example.com/my-custom-option) to avoid ambiguity. Un-prefixed names are reserved for key names defined by Gateway API.
149+
114150
#### Certificates
115151

116152
The BackendTLSPolicyValidation must contain a certificate reference of some kind, and contains two ways to configure the
@@ -146,3 +182,5 @@ uses `PolicyAncestorStatus` to allow you to know which parentReference set that
146182
[hostname]: /references/spec/#gateway.networking.k8s.io/v1.PreciseHostname
147183
[rfc-3986]: https://tools.ietf.org/html/rfc3986
148184
[targetRefs]: /references/spec/#gateway.networking.k8s.io/v1alpha2.PolicyTargetReference
185+
[subjectAltNames]: /references/spec/#gateway.networking.k8s.io/v1alpha3.BackendTLSPolicyValidation
186+
[options]: /references/spec/#gateway.networking.k8s.io/v1alpha3.GatewayTLSConfig

0 commit comments

Comments
 (0)