Santosh Kumar Sahu created ZOOKEEPER-4987:
---------------------------------------------

             Summary: zookeeper client fails to fallback to tls1.2 when tls1.3 
ciphers are not correct / zookeeper client fails to fallback to tls1.3 when 
tls1.2 ciphers are not correct
                 Key: ZOOKEEPER-4987
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4987
             Project: ZooKeeper
          Issue Type: Bug
          Components: java client
         Environment: Dockerized environment

using jdk 17 

 
            Reporter: Santosh Kumar Sahu


Hi we have 2 microservices, 1. zookeeper based 2. kafka based

For zookeeper configuration , we have configured with below parameters related 
to tls - 

    ssl.protocol=TLSv1.3
    ssl.quorum.protocol=TLSv1.3
    ssl.enabledProtocols=TLSv1.3,TLSv1.2
    ssl.quorum.enabledProtocols=TLSv1.3,TLSv1.2

Also jvm opts for zookeeper we have below opts - 
-Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -Dhttps.protocols=TLSv1.3,TLSv1.2

>From kafka side we are setting below 2 configuration parameters in properties 
>file  which is used to start kafka server - 

  zookeeper.ssl.protocol: "TLSv1.3"
  zookeeper.ssl.enabled.protocols: "TLSv1.3,TLSv1.2"

 

for kafka , we have below opts for jvm

-Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -Dhttps.protocols=TLSv1.3,TLSv1.2

 

Zookeeper server version - 3.8.4

Kafka server version - 3.9.0

inside kafka java class load path we are adding zookeeper server binary, 
because its zookeeper client component used by kafka for communicating with 
zookeeper server.

So that zookeeper client version is 3.9.2

 

Now it was observed that, kafka uses TLSv1.3 to communicate with zookeeper 
which is okay, because zookeeper support both TLSv1.2 and TLSv1.3.

But if I dont set TLS1.3 related ciphers  and only set TLS1.2 related ciphers 
to zookeeper, ideally kafka also fallback to TLS1.2 and keep using TLSv1.2 for 
ssl handshake. But that doesnt happen.

As we have set only TLS1.2 related ciphers to zookeeper, zookeeper server falls 
back to TLS1.2 and expects that kafka should use TLS1.2 only but kafka still 
uses TLS1.3 and below error messages are printed in zookeeper logs - and kafka 
pods doesnt come up - 

 

{"message":"Caused by: javax.net.ssl.SSLHandshakeException: The client 
supported protocol versions [TLSv1.3] are not accepted by server preferences 
[TLSv1.2]","metadata":\{"container_name":"zookeeper","namespace":"namespace1","pod_name":"zookeeper-0"},"service_id":"zookeeper","severity":"info","timestamp":"2025-10-09T08:50:15.443+00:00","version":"1.2.0"}
{"message":"\tat 
java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)","metadata":\{"container_name":"zookeeper","namespace":"namespace1","pod_name":"zookeeper-0"},"service_id":"zookeeper","severity":"info","timestamp":"2025-10-09T08:50:15.443+00:00","version":"1.2.0"}
{"message":"\tat 
java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)","metadata":\{"container_name":"zookeeper","namespace":"namespace1","pod_name":"zookeeper-0"},"service_id":"zookeeper","severity":"info","timestamp":"2025-10-09T08:50:15.443+00:00","version":"1.2.0"}

 

 

 



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

Reply via email to