Skip to content

Commit 7ca74e1

Browse files
committed
docs: add provisional GEP for flexible TLS Validation in BackendTLSPolicy
Signed-off-by: Norwin Schnyder <[email protected]>
1 parent 1cf7222 commit 7ca74e1

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

geps/gep-4152/index.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# GEP-4152: Allow flexible TLS Validation in BackendTLSPolicy
2+
3+
* Issue: [#4152](https://github.com/kubernetes-sigs/gateway-api/issues/4152)
4+
* Status: Provisional
5+
6+
## TLDR
7+
8+
The ability for the `BackendTLSPolicy` to skip TLS verification or to validate certifcates based on their fingerprint or public key hash.
9+
10+
## Motivation
11+
12+
The current `BackendTLSPolicy` follows a secure-by-default approach that requires users to provide a trusted CA certificate bundle or rely on the system’s default certificate store (which typically includes root CAs) to validate backend server certificates. However, real-world deployments include cases where strict certificate validation may not be possible or practical, e.g., Development and testing environments that use self-signed certificates generated dynamically at runtime.
13+
14+
In such scenarios, users may need the flexibility to disable certificate verification, or to use certificate pinning. Certificate pinning offers a safer and more controlled alternative, instead of bypassing TLS validation, the gateway verifies that the backend’s certificate matches a known fingerprint or public key hash. This preserves the confidentiality and integrity guarantees of TLS while removing the operational overhead of managing full certificate chains or trusted CA bundles.
15+
16+
### User Stories
17+
18+
* As an application developer, I want the option to disable backend TLS certificate verification on a per-backend basis, so I can connect to services using dynamically generated or self-signed certificates during development or testing.
19+
* As an application developer, I want secure-by-default behavior, ensuring that certificate verification is always enabled unless I explicitly opt out, to prevent accidentally deploying insecure configurations to production.
20+
* As an application developer, I want an alternative to disabling verification, such as certificate or SPKI pinning, so I can securely communicate with backends using self-signed certifcates without managing CA bundles.
21+
* As a gateway operator, I want to control whether skipping TLS verification is permitted for specific Gateways.
22+
* As a security officer, I want transperency and auditability into where TLS verification has been disabled.
23+
24+
## Goals
25+
26+
* Enable connecting to backends over TLS without requiring certificate validation.
27+
* Support certificate and SPKI pinning as alternatives to disabling verification or relying on CA trust chains.
28+
* Maintain secure-by-default approach, with certificate verification enabled unless explicitly opted out.
29+
* Provide operator-level controls so Gateway constraints can restrict or permit the use of skip-verify.
30+
31+
## API
32+
33+
**TODO**: First PR will not include any implementation details, in favor of
34+
building consensus on the motivation, goals and non-goals first. _"How?"_ we
35+
implement shall be left open-ended until _"What?"_ and _"Why?"_ are solid.
36+
37+
## References
38+
39+
* [GEP-1897: BackendTLSPolicy - Explicit Backend TLS Connection Configuration](https://gateway-api.sigs.k8s.io/geps/gep-1897/)

geps/gep-4152/metadata.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: internal.gateway.networking.k8s.io/v1alpha1
2+
kind: GEPDetails
3+
number: 4152
4+
name: Allow flexible TLS Validation in BackendTLSPolicy
5+
status: Provisional
6+
authors:
7+
- snorwin

0 commit comments

Comments
 (0)