[ https://issues.apache.org/jira/browse/ZOOKEEPER-4392?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anoop Negi updated ZOOKEEPER-4392: ---------------------------------- Issue Type: Bug (was: Test) Priority: Blocker (was: Major) > Zookeeper 3.6.2 : The client supported protocol versions [TLSv1.3] are not > accepted by server preferences > --------------------------------------------------------------------------------------------------------- > > Key: ZOOKEEPER-4392 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4392 > Project: ZooKeeper > Issue Type: Bug > Components: server > Affects Versions: 3.7.0, 3.6.2 > Environment: Kubernetes > Reporter: Anoop Negi > Priority: Blocker > > We are trying to add TLSv1.3 support in Zookeeper, currently by default > TLSv1.2 is supported. > Following are the configuration > > {code:java} > ssl.protocol=TLSv1.3 > ssl.enabledProtocols=TLSv1.3,TLSv1.2 > serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory > sslQuorumReloadCertFiles=true > quorumListenOnAllIPs=true > secureClientPort=2281 > sslQuorum=false > portUnification=true > ssl.quorum.clientAuth=need > ssl.quorum.hostnameVerification=true > ssl.quorum.keyStore.location=/opt/zookeeper/cert/cert1.pem > ssl.quorum.trustStore.location=/opt/zookeeper/cert/cacert.pem > ssl.trustStore.location=/opt/zookeeper/cert/ca/clientcacert.pem > ssl.keyStore.location=/opt/zookeeper/cert/cert1.pem > ssl.clientAuth=need > {code} > by setting "*ssl.enabledProtocols=TLSv1.3,TLSv1.2*", only TLSv1.2 > communication is working but for TLSv1.3 following error coming > > {code:java} > 2021-10-07T12:24:44.121+0000 [myid:] - ERROR > [nioEventLoopGroup-4-2:NettyServerCnxnFactory$CertificateVerifier@434] - > Unsuccessful handshake with session 0 x0 > 2021-10-07T12:24:44.123+0000 [myid:] - WARN > [nioEventLoopGroup-4-2:NettyServerCnxnFactory$CnxnChannelHandler@273] - > Exception caught > io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: > The client supported protocol versions [TLSv1.3] are not accepted by server p > references [TLS12] > at > io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:471) > ~[netty-codec-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) > ~[netty-codec-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > [netty-transport-4.1.50.Final.jar:4.1.5 0.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > [netty-transport-4.1.50.Final.jar:4.1.5 0.Final] > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) > [netty-transport-4.1.50.Final.jar:4.1.50. Final] > at > io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) > [netty-transport-4.1.50.Final.jar:4.1.50.Final ] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > [netty-transport-4.1.50.Final.jar:4.1.5 0.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > [netty-transport-4.1.50.Final.jar:4.1.5 0.Final] > at > io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) > [netty-common-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) > [netty-common-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > [netty-common-4.1.50.Final.jar:4.1.50.Final] > at java.lang.Thread.run(Thread.java:829) [?:?] > Caused by: javax.net.ssl.SSLHandshakeException: The client supported protocol > versions [TLSv1.3] are not accepted by server preferences [TLS12] > at sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:?] > at sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[?:?] > at sun.security.ssl.TransportContext.fatal(TransportContext.java:336) > ~[?:?] > at sun.security.ssl.TransportContext.fatal(TransportContext.java:292) > ~[?:?] > at sun.security.ssl.TransportContext.fatal(TransportContext.java:283) > ~[?:?] > at > sun.security.ssl.ClientHello$ClientHelloConsumer.negotiateProtocol(ClientHello.java:916) > ~[?:?] > at > sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(ClientHello.java:832) > ~[?:?] > at > sun.security.ssl.ClientHello$ClientHelloConsumer.consume(ClientHello.java:813) > ~[?:?] > at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) ~[?:?] > at > sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443) ~[?:?] > at > sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1074) > ~[?:?] > at > sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1061) > ~[?:?] > at java.security.AccessController.doPrivileged(Native Method) ~[?:?] > at > sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1008) > ~[?:?] > at > io.netty.handler.ssl.SslHandler.runAllDelegatedTasks(SslHandler.java:1542) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1556) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1440) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1267) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1314) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) > ~[netty-codec-4.1.50.Final.jar:4.1.50. Final] > at > io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) > ~[netty-codec-4.1.50.Final.jar:4.1.50.Final] > ... 17 more > {code} > error"The client supported protocol versions [TLSv1.3] are not accepted by > server preferences" > > > Zookeeper using *netty 4.1.50 which support TLSv1.3*( netty 4.1.31 onwards > support TLSv1.3 ref: [https://netty.io/news/2018/10/30/4-1-31-Final.html]) > when trying to openssl with -tls1_3 to connect with zookeeper over TLS port > it failed with following error coming > {code:java} > openssl s_client --connect zookeeper1:2281 --cert > /run/secret/client/clicert.pem --key /run/secret/client/cliprivkey.pem > --CAfile /run/secret/ca/cacert.pem -tls1_3 > CONNECTED(00000003) > 140629337047680:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert > protocol version:ssl/record/rec_layer_s3.c:1544:SSL alert number 70 > --- > no peer certificate available > --- > No client certificate CA names sent > --- > SSL handshake has read 7 bytes and written 318 bytes > Verification: OK > --- > New, (NONE), Cipher is (NONE) > Secure Renegotiation IS NOT supported > Compression: NONE > Expansion: NONE > No ALPN negotiated > Early data was not sent > Verify return code: 0 (ok) > {code} > > and if *ssl.enabledProtocols=TLSv1.3* (only TLSv1.3) then TLSv1.2 also not > working and following error coming in logs > {code:java} > at > io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) > [netty-transport-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) > [netty-common-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) > [netty-common-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > [netty-common-4.1.50.Final.jar:4.1.50.Final] > at java.lang.Thread.run(Thread.java:829) [?:?] > Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol > (protocol is disabled or cipher suites are inappropriate) > at > sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170) ~[?:?] > at > sun.security.ssl.ServerHandshakeContext.<init>(ServerHandshakeContext.java:62) > ~[?:?] > at > sun.security.ssl.TransportContext.kickstart(TransportContext.java:222) ~[?:?] > at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:491) > ~[?:?] > at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:454) > ~[?:?] > at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:433) > ~[?:?] > at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:637) ~[?:?] > at > io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:282) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1372) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1267) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1314) > ~[netty-handler-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) > ~[netty-codec-4.1.50.Final.jar:4.1.50.Final] > at > io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) > ~[netty-codec-4.1.50.Final.jar:4.1.50.Final] > ... 17 more > {code} > error " No appropriate protocol (protocol is disabled or cipher suites are > inappropriate)" > I wonder if TLSv1.3 is really supported in zookeeper or not, if yes then from > which version onwards? > so, would need help to enable TLSv1.3 support, > let us know if any further information required. -- This message was sent by Atlassian Jira (v8.20.1#820001)