[FLINK-39022][security] Set security.ssl.algorithms default value to modern cipher suite #27514
+30
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the purpose of the change
The JDK update JDK-8245545 (JDK 11.0.30+, 17.0.18+, 21.0.10+, and 24+) disabled all
TLS_RSA_*cipher suites by adding them to thejdk.tls.disabledAlgorithmssecurity property. This action discontinues support for "Static RSA" key exchange in JDK. This affectsTLS_RSA_WITH_AES_128_CBC_SHA, which is the current default for Flink.Flink deployments operating on these specific JDK versions (or newer) will experience connection failures if the configuration relies on legacy RSA cipher suites (e.g.,
TLS_RSA_WITH_AES_128_CBC_SHA). This typically manifests as ajavax.net.ssl.SSLHandshakeExceptionduring the handshake process.To mitigate this, users should transition to cipher suites that support forward-secrecy (RFC 9325) and comply with the IETF Draft, Deprecating Obsolete Key Exchange Methods in TLS.
This change intends to help the cipher suite transition by updating the default value of the Flink
security.ssl.algorithmsconfiguration from the current obsoleteTLS_RSA_WITH_AES_128_CBC_SHAto the modern defaults:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.Justification: While both
TLS_ECDHE_ECDSA_*andTLS_ECDHE_RSA_*variants were evaluated,TLS_ECDHE_RSA_*was selected. This choice prioritizes backward compatibility while maintaining full compliance with Java 11 (Flink's minimum supported version).Migration: No user action is required to adopt this change; the migration occurs automatically upon upgrade if security.ssl.algorithm is not set explicitly in the Flink configuration.
Edge Cases:
security.ssl.algorithmsinflink-conf.yamlto a list containing only RSA ciphers will experience handshake failures until they update their config.TLS_RSAciphers, connections will fail.Brief change log
security.ssl.algorithmsconfiguration default value toTLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.Verifying this change
SecurityOptionsTest.Does this pull request potentially affect one of the following parts:
@Public(Evolving): yes, the default value of security.ssl.algorithm will change.Documentation