envoyproxy / envoyproxy/gateway

The TLS cipher settings for ClientTrafficPolicy do not support equal-preference groups.

Open
#9,679 2 comments 0 reactions 0 assignees View on GitHub
stale triage
Dominant language
Go
Stars
3k
Forks
864
Avg merge
2d 2h
Merged PRs (30d)
140

Description

*Description*:
In version 1.7.x, I enabled TLS 1.1 by modifying the default cipher suites listed in the [documentation](https://gateway.envoyproxy.io/docs/api/extension_types/#clienttlssettings).
After upgrading to version 1.8.3, the TLS ciphers defined in the `ClientTrafficPolicy` became invalid.
The error message reads:
```
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
```

*Repro steps*:
1. Create the following policy:
```yaml
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
name: eg
spec:
tls:
# To maintain compatibility with okhttp 2.X, downgrade to HTTP/1.1.
alpnProtocols:
- http/1.1
minVersion: "1.1"
ciphers:
- '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]'
- '[ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]'
- ECDHE-ECDSA-AES256-GCM-SHA384
- ECDHE-RSA-AES256-GCM-SHA384
# Due to the need to support Windows Server 2008, it is necessary to enable TLS 1.1.
- ECDHE-ECDSA-AES128-SHA
- ECDHE-RSA-AES128-SHA
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: eg
```
2. Run `kubectl describe ClientTrafficPolicy eg`

*Environment*:
Envoy Gateway 1.8.3

*Logs*:
```
Status:
Ancestors:
Ancestor Ref:
Group: gateway.networking.k8s.io
Kind: Gateway
Name: eg
Namespace: default
Conditions:
Last Transition Time: 2026-08-06T04:10:03Z
Message: TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
TLS: unsupported cipher suite: [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305].
Observed Generation: 9
Reason: Invalid
Status: False
Type: Accepted
Controller Name: gateway.envoyproxy.io/gatewayclass-controller
```

*Mitigation Solution*
Separate ciphers that in the equal-preference groups:
```yaml
ciphers:
- ECDHE-ECDSA-AES128-GCM-SHA256
- ECDHE-ECDSA-CHACHA20-POLY1305
- ECDHE-RSA-AES128-GCM-SHA256
- ECDHE-RSA-CHACHA20-POLY1305
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the ClientTrafficPolicy example and trace how its TLS ciphers are validated, focusing on equal-preference groups written with the `|` separator. Compare that behavior with the documented syntax and the separate-cipher mitigation. Done means the grouped cipher values are accepted without an Invalid status while existing cipher validation remains intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
api, security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.