Skip to content

feat(tls): allow configuring supported signature algorithms#14282

Merged
davidjumani merged 2 commits into
kgateway-dev:mainfrom
marvin-roesch:feat/tls-signature-algorithms
Jul 13, 2026
Merged

feat(tls): allow configuring supported signature algorithms#14282
davidjumani merged 2 commits into
kgateway-dev:mainfrom
marvin-roesch:feat/tls-signature-algorithms

Conversation

@marvin-roesch

@marvin-roesch marvin-roesch commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Description

This allows users to customize which signature algorithms are supported both for downstream as well as upstream communication.

Note that we use a newer version of the (official) curl image as the --sigalgs option is newer than what's currently pushed to ghcr.io/kgateway-dev/curl. At least 8.14.0 is required. This update also meant changing some of the behavior with regards to error codes, as the newer OpenSSL version included in the image appears to deal with mTLS things differently.

Related issues: Closes #14281

Change Type

/kind feature

Changelog

Allow configuring supported TLS signature algorithms in `Gateway` and `BackendConfigPolicy`

@gateway-bot gateway-bot added kind/feature Categorizes issue or PR as related to a new feature. release-note labels Jun 22, 2026
@marvin-roesch
marvin-roesch force-pushed the feat/tls-signature-algorithms branch 2 times, most recently from 5c1e45a to e28b051 Compare June 22, 2026 09:59
@marvin-roesch
marvin-roesch marked this pull request as ready for review June 22, 2026 11:09
@marvin-roesch
marvin-roesch requested a review from a team as a code owner June 22, 2026 11:09
Copilot AI review requested due to automatic review settings June 22, 2026 11:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for configuring Envoy TLS signatureAlgorithms via Gateway TLS listener options, wiring the option through kgateway’s TLS IR and into the generated Envoy transport socket configuration, and adds accompanying tests/utilities to exercise the behavior.

Changes:

  • Add a new Gateway TLS option annotation (kgateway.dev/signature-algorithms) and plumb it into ir.TLSConfig and Envoy TlsParameters.
  • Extend the curl request utility and frontend TLS e2e suite to test signature algorithm behavior with multiple certificate types.
  • Update gateway translator golden inputs/outputs and sslutils unit tests to cover the new TLS option.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
test/e2e/features/frontendtls/testdata/tls-rsa-secret.yaml Rename RSA test Secret and clarify its purpose for signature-algorithm selection tests
test/e2e/features/frontendtls/testdata/tls-ecdsa-p384-secret.yaml Add ECDSA P-384 test Secret to validate disallowed signature behavior
test/e2e/features/frontendtls/testdata/tls-ecdsa-p256-secret.yaml Add ECDSA P-256 test Secret to validate allowed signature behavior
test/e2e/features/frontendtls/testdata/gw.yaml Update Gateway to reference multiple certs and set the new signature-algorithms TLS option
test/e2e/features/frontendtls/suite.go Add e2e coverage for signature algorithm negotiation and update prerequisite manifests
pkg/utils/requestutils/curl/request.go Add --sigalgs support when generating curl command args
pkg/utils/requestutils/curl/option.go Add signature algorithm option/constants for curl helper
pkg/pluginsdk/ir/gw2.go Extend TLS IR with SignatureAlgorithms
pkg/kgateway/translator/sslutils/ssl_utils.go Parse/apply the signature algorithms TLS option from listener options into IR
pkg/kgateway/translator/sslutils/ssl_utils_test.go Add unit tests for signature algorithms option parsing
pkg/kgateway/translator/irtranslator/fc.go Emit signatureAlgorithms into Envoy TLS parameters during transport socket translation
pkg/kgateway/translator/gateway/testutils/outputs/listener-sets/tls-options.yaml Update golden output to include signatureAlgorithms
pkg/kgateway/translator/gateway/testutils/outputs/gateway-only/tls-options.yaml Update golden output to include signatureAlgorithms
pkg/kgateway/translator/gateway/testutils/inputs/listener-sets/tls-options.yaml Add signature-algorithms option to golden input
pkg/kgateway/translator/gateway/testutils/inputs/gateway-only/tls-options.yaml Add signature-algorithms option to golden input
api/annotations/gateway.go Define the new Gateway TLS option annotation key and docs

Comment thread pkg/utils/requestutils/curl/request.go
Comment thread test/e2e/features/frontendtls/suite.go
Comment thread test/e2e/features/frontendtls/suite.go Outdated
Comment thread pkg/utils/requestutils/curl/option.go
Comment thread pkg/utils/requestutils/curl/option.go
Comment thread api/annotations/gateway.go
@marvin-roesch
marvin-roesch force-pushed the feat/tls-signature-algorithms branch 8 times, most recently from 438bd14 to 862a821 Compare June 23, 2026 14:03
@marvin-roesch
marvin-roesch requested a review from Copilot June 23, 2026 14:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 30 out of 31 changed files in this pull request and generated 8 comments.

Files not reviewed (1)
  • api/v1alpha1/kgateway/zz_generated.deepcopy.go: Generated file

Comment thread test/e2e/features/frontendtls/suite.go
Comment thread pkg/utils/requestutils/curl/native_request.go
Comment thread pkg/kgateway/translator/sslutils/ssl_utils.go
Comment thread test/e2e/features/frontendtls/testdata/CLIENT_CERTS_README.md Outdated
Comment thread test/e2e/features/frontendtls/testdata/CLIENT_CERTS_README.md Outdated
containers:
- name: curl
image: ghcr.io/kgateway-dev/curl:7.83.1
image: curlimages/curl:8.20.0

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be replaced with a new GHCR version of the image at some point, anyway.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created #14395 as a followup

Comment thread test/e2e/features/frontendtls/suite.go
@marvin-roesch
marvin-roesch force-pushed the feat/tls-signature-algorithms branch from 862a821 to d6b1b8b Compare June 24, 2026 06:43
@davidjumani
davidjumani added this pull request to the merge queue Jul 13, 2026
Merged via the queue into kgateway-dev:main with commit a314eae Jul 13, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature Categorizes issue or PR as related to a new feature. release-note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow changing supported TLS signature algorithms

5 participants