Gergely Harmadás created KAFKA-20676:
----------------------------------------

             Summary: Broker fails to start when ssl.cipher.suites contains 
ciphers unavailable in the JSSE provider
                 Key: KAFKA-20676
                 URL: https://issues.apache.org/jira/browse/KAFKA-20676
             Project: Kafka
          Issue Type: Task
          Components: core, security
            Reporter: Gergely Harmadás
            Assignee: Gergely Harmadás


When *ssl.cipher.suites* is configured with an unsupported cipher suite by the 
JSSE provider the broker fails at startup
{code:java}
[2026-06-09 00:27:36,713] ERROR Exiting Kafka due to fatal exception during 
startup. (kafka.Kafka$)
org.apache.kafka.common.config.ConfigException: Invalid value 
java.lang.IllegalArgumentException: Unsupported CipherSuite: 
TLS_AES_128_CCM_SHA256 for configuration A client SSLEngine created with the 
provided settings can't connect to a server SSLEngine created with those 
settings.
        at 
org.apache.kafka.common.security.ssl.SslFactory.configure(SslFactory.java:103)
        at 
org.apache.kafka.common.network.SslChannelBuilder.configure(SslChannelBuilder.java:68)
        at 
org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:187)
        at 
org.apache.kafka.common.network.ChannelBuilders.serverChannelBuilder(ChannelBuilders.java:104)
        at kafka.network.Processor.<init>(SocketServer.scala:863)
        at kafka.network.Acceptor.newProcessor(SocketServer.scala:769)
        at 
kafka.network.Acceptor.$anonfun$addProcessors$1(SocketServer.scala:735)
        at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:256)
        at kafka.network.Acceptor.addProcessors(SocketServer.scala:734)
        at kafka.network.DataPlaneAcceptor.configure(SocketServer.scala:455)
        at 
kafka.network.SocketServer.createDataPlaneAcceptorAndProcessors(SocketServer.scala:227)
        at kafka.network.SocketServer.$anonfun$new$16(SocketServer.scala:153)
        at 
kafka.network.SocketServer.$anonfun$new$16$adapted(SocketServer.scala:153)
        at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:630)
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:628)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:936)
        at kafka.network.SocketServer.<init>(SocketServer.scala:153)
        at kafka.server.BrokerServer.startup(BrokerServer.scala:292)
        at 
kafka.server.KafkaRaftServer.$anonfun$startup$2(KafkaRaftServer.scala:97)
        at 
kafka.server.KafkaRaftServer.$anonfun$startup$2$adapted(KafkaRaftServer.scala:97)
        at scala.Option.foreach(Option.scala:437)
        at kafka.server.KafkaRaftServer.startup(KafkaRaftServer.scala:97)
        at kafka.Kafka$.main(Kafka.scala:98)
        at kafka.Kafka.main(Kafka.scala)
[2026-06-09 00:27:36,714] INFO [ControllerServer id=1] shutting down 
(kafka.server.ControllerServer){code}
This behavior has some drawbacks, e.g.:
 * It is harder to complete JDK upgrades as new versions typically remove 
support from weak ciphers. A broker that previously worked with a given 
configuration can suddenly fail
 * Running Kafka in FIPS environment with custom security policies usually 
works with a reduces cipher list making it more likely to encounter this issue

As a possible improvement I would propose to only fail when there is no valid 
cipher suite in the provided configuration, otherwise just filter out the 
unsupported ciphers.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to