Hi Luke, Thanks for reviewing the KIP. Regarding LC1, that makes sense. The
tests can run on all supported Java versions rather than skipping the
unsupported case entirely. On Java 20 and later, they can verify that
configured named groups are applied. On earlier Java versions, a non-empty
ssl.named.groups can be tested to ensure that creating the SSL engine throws an
InvalidConfigurationException. Empty or unset configurations should continue to
work without calling SSLParameters.setNamedGroups(). I’ll update the PR tests
accordingly. Regarding LC2, my understanding is that a non-empty
ssl.named.groups is an explicit Kafka configuration and is applied to each
Kafka-created SSL engine through SSLParameters.setNamedGroups(). It therefore
takes precedence over the JVM-wide jdk.tls.namedGroups value for those engines.
When ssl.named.groups is empty or unset, Kafka does not call setNamedGroups(),
so the JVM system propertyor the provider defaults when that property is
absentcontinues to apply. I agree that this precedence should be stated
explicitly in the compatibility section. I don’t think Kafka needs to reject or
warn when both are configured, since the Kafka-specific setting is presumably
an intentional per-application override, but it would be useful to document the
behavior clearly.
Thanks and regardsArnab Nandy
On Thursday, 15 October 2026 at 01:00:48 pm IST, Luke Chen
<[email protected]> wrote:
Hi Mickael,
Thanks for the KIP!This is necessary to protect connections in kafka.
LC1: "These tests will be skipped when run on a JVM that does not support named
groups. The CI already runs with Java 25, so this will be effectively
tested."I'm wondering if we can run tests with all java versions, but expect to
fail when running on unsupported versions? If we only test java 25, we can't
test the unsupported java version with ConfigExceptions, right?
LC2: About the jvm "jdk.tls.namedGroups" system properties:LC2.1. What if
current users already set "jdk.tls.namedGroups=x25519" system properties, and
after this KIP, it also sets "ssl.named.groups=x448", then I think the jvm
system properties will be skipped, right? Do you think this will cause some
unexpected security problems? Maybe when setting "ssl.named.groups", we should
check if "jdk.tls.namedGroups" system properties are set or not?LC2.2. In the
compatibility section, I think we should add some explanations about how we
honor "ssl.named.groups" and "jdk.tls.namedGroups" when each is set or not set.
Thank you,Luke
On Sun, Oct 11, 2026 at 10:49 PM Arnab Nandy via dev <[email protected]>
wrote:
Hi Mickael,
Thanks, that clarifies both points.
I’ll update PR #22865 so that ssl.named.groups follows the same behavior as
ssl.cipher.suites: when the configuration is empty or unset, Kafka will not
call SSLParameters.setNamedGroups() and the JVM/provider defaults will be
preserved. A non-empty value will be applied in the configured preference order.
The current PR will be more focused on the client and broker implementation,
and handle OAuth and Connect REST support in separate follow-up PRs under
KIP-1376.
Also update the documentation and examples to use Java 27 and x25519_mlkem768.
And sorry for this duplication on a separate thread. I'm using ASF Mailing List
first time so misjudged how it works, adding the link here for the context of
my reply.
https://lists.apache.org/thread/olv28ft7m05obm01b8hj19mld2lzhc9d
Thanks,
Arnab
On 2026/10/07 13:07:14 Mickael Maison wrote:
> Hi Paolo,
>
> 1. No I'm not referring to this API. As per the javadoc, the
> SSLParameters.setNamedGroups() API was added in Java 20.
> From a quick search it wasn't part of a JEP, here is the CSR:
> https://bugs.openjdk.org/browse/JDK-8291950
> https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/net/ssl/SSLParameters.html#setNamedGroups(java.lang.String[])
>
> 2. Good catch, fixed
>
> 3. My understanding is that roadmap is only for Oracle. I don't want
> to set expectations that other vendors will follow it or even backport
> that feature.
>
> 4. "Drop" means they are ignored. So if you set ssl.protocol to
> TLSv1.2 and a named group only available in TLSv1.3, the named group
> will be ignored.
> I propose to let the JVM handle it and possibly throw a TLS handshake
> exception at runtime if the configuration is invalid. This is based on
> these two reasons:
> - it matches the behavior of ciphers
> - checking the named groups and TLS version is likely to be brittle as
> new names are added/removed and the exact behavior may depend on the
> specific JVM
>
> Thanks,
> Mickael
>
>
>
> On Wed, Oct 7, 2026 at 12:11 PM Paolo Patierno <[email protected]> wrote:
> >
> > Hi Mickael,
> > thanks for opening the KIP and starting such discussion.
> >
> > > Named groups are how the JVM describes TLS key exchange schemes. APIs to
> > use named groups have been added in Java 20.
> > Are you referring to KEM API? Because JEP-452 <https://openjdk.org/jeps/452>
> > was done as part of Java 21 not 20.
> >
> > > This JEP was initially delivered in Java 26
> > Even in this case JEP-527 <https://openjdk.org/jeps/527> was delivered as
> > part of Java 27 not 26.
> >
> > > It's being backported by several implementations to earlier Java versions.
> > You can add a reference to the roadmap
> > <https://www.java.com/en/jre-jdk-cryptoroadmap.html> or you can find more
> > details on this link about the Oracle plan
> > https://blogs.oracle.com/java/post-quantum-cryptography-in-long-term-support-jdk-releases
> > so
> > that readers can have an idea about the older Java versions which are going
> > to get it (first one will be Java 25 at the end of October 2026).
> >
> > > The TLS version (set via ssl.protocol) gates what named groups are valid
> > and automatically drops entries not compatible (like for ciphers).
> > What does exactly mean "drop" here? If I set TLS 1.2 for example but then
> > in the named groups I add "X25519MLKEM768", does Kafka refuse the
> > configuration? Or it leaves to the JVM during the TLS handshake? (If you
> > have x25519 in the list it should fall back. It works for TLS 1.3 but need
> > to be confirmed for 1.2).
> >
> > Thanks,
> > Paolo
> >
> > On Tue, 6 Oct 2026 at 12:14, Mickael Maison <[email protected]>
> > wrote:
> >
> > > Hi,
> > >
> > > I'd like to start a discussion about KIP-1376 which proposes adding
> > > support for TLS named groups:
> > > https://cwiki.apache.org/confluence/x/dJXwGg
> > >
> > > Thanks,
> > > Mickael
> > >
> >
> >
> > --
> > Paolo Patierno
> >
> > *Senior Principal Software Engineer @ IBM**CNCF Ambassador*
> >
> > Twitter : @ppatierno <http://twitter.com/ppatierno>
> > Linkedin : paolopatierno <http://it.linkedin.com/in/paolopatierno>
> > GitHub : ppatierno <https://github.com/ppatierno>
>
Regards
Arnab Nandy