Skip to content

Commit 7b7e5e4

Browse files
committed
update tls docs
1 parent 2c3e130 commit 7b7e5e4

1 file changed

Lines changed: 30 additions & 7 deletions

File tree

docs/guides/https.md

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ In this case, the VPC Lattice service automatically generates a managed ACM cert
4949

5050
If you want to use a custom domain name along with its own certificate, follow instructions on [Requesting a public certificate](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) to create a certificate for your custom domain name in ACM.
5151

52-
Note that only `Terminate` mode is supported (Passthrough is not supported).
52+
Note that only `Terminate` mode is supported for HTTPS listeners. For TLS Passthrough, use a `protocol: TLS` listener with a [TLSRoute](../api-types/tls-route.md) instead.
5353

5454
#### Automatic Certificate Discovery
5555

@@ -138,10 +138,14 @@ spec:
138138

139139
### Enabling TLS connection on the backend
140140

141-
Currently, TLS Passthrough mode is not supported in the controller, but it allows TLS re-encryption to support backends that only allow TLS connections.
142-
To handle this use case, you need to configure your service to receive HTTPs traffic instead:
141+
If your backend pods require TLS connections, you can configure VPC Lattice to re-encrypt traffic before forwarding it to your pods. This is useful when you want VPC Lattice to terminate client-facing TLS (for HTTP routing and inspection) while still encrypting the connection from VPC Lattice to your pods.
143142

144-
```yaml title="target-group.yaml" hl_lines="10"
143+
!!! note
144+
If you want end-to-end passthrough without TLS termination, use a [TLSRoute](../api-types/tls-route.md) with a `protocol: TLS`, `mode: Passthrough` Gateway listener instead. The approach below is for re-encryption, where VPC Lattice terminates and then re-establishes TLS to the backend.
145+
146+
To configure TLS re-encryption, create a `TargetGroupPolicy` with `protocol: HTTPS`:
147+
148+
```yaml title="target-group-policy.yaml" hl_lines="10"
145149
apiVersion: application-networking.k8s.aws/v1alpha1
146150
kind: TargetGroupPolicy
147151
metadata:
@@ -155,7 +159,26 @@ spec:
155159
protocolVersion: HTTP1
156160
```
157161
158-
This will create VPC Lattice TargetGroup with HTTPs protocol option, which can receive TLS traffic.
159-
Note that certificate validation is not supported.
162+
This creates a VPC Lattice target group with HTTPS protocol, causing Lattice to open a TLS connection when forwarding traffic to your pods.
163+
164+
!!! warning "Health check protocol"
165+
If your pods only accept TLS connections, you **must** also set `healthCheck.protocol: HTTPS` in the TargetGroupPolicy. The controller defaults health checks to HTTP regardless of the target group protocol. Without this setting, health checks will fail and targets will never become healthy.
166+
167+
```yaml
168+
healthCheck:
169+
protocol: HTTPS
170+
path: /healthz
171+
statusMatch: "200"
172+
```
173+
174+
#### Certificate requirements
175+
176+
VPC Lattice does not validate backend certificates, so self-signed certificates work without any CA or trust bundle configuration. Re-encryption provides transport-level encryption between VPC Lattice and your pods, but does not authenticate the backend server's identity.
177+
178+
#### Re-encryption vs TLS Passthrough
179+
180+
With re-encryption, VPC Lattice terminates TLS from the client, inspects HTTP headers for routing, then opens a new TLS connection to the backend pod. This allows you to use HTTPRoute or GRPCRoute features like path-based routing, header matching, and IAM auth policies.
181+
182+
If you need true end-to-end encryption where VPC Lattice never decrypts traffic, use [TLS Passthrough](tls-passthrough.md) instead. With TLS Passthrough, routing is limited to SNI hostname matching and IAM auth policies are restricted to anonymous principals.
160183

161-
For more details, please refer to [TargetGroupPolicy API reference](../api-types/target-group-policy.md).
184+
For more details on TargetGroupPolicy fields, see the [TargetGroupPolicy API reference](../api-types/target-group-policy.md).

0 commit comments

Comments
 (0)