Hi,

It is strange! I tested the following code with OpenJDK 1.8.0+362,
11.0.21, 17.0.9 and 21.0.2 (installed through brew and sdkman). All
results are the same. The default protocol is "TLSv1.3", and the
enabled protocols is "[TLSv1.3, TLSv1.2]". I also intercepted code
path in "ClientSSLReloadTest.certificateReloadTest", and found that
"SSLContextAndOptions.enabledProtocols" get `["TLSv1.3", "TLSv1.2"].


+    @Test
+    public void testTlsProtocols() throws Exception {
+        System.out.println("default protocol: " + X509Util.DEFAULT_PROTOCOL);
+
+        SSLContext sslContext =
SSLContext.getInstance(X509Util.DEFAULT_PROTOCOL);
+        sslContext.init(null, null, null);
+        System.out.println("enabled protocols: " +
Arrays.asList(sslContext.getDefaultSSLParameters().getProtocols()));
+    }

Besides,  the doc in zookeeperAdmin[1] states the same.

> Specifies the enabled protocols in client and quorum TLS negotiation. 
> Default: TLSv1.3, TLSv1.2 if value of protocol property is TLSv1.3. TLSv1.2 
> if protocol is TLSv1.2.

Best,
Kezhu Wang

[1]: https://zookeeper.apache.org/doc/r3.9.3/zookeeperAdmin.html


On Sat, May 17, 2025 at 12:13 AM Andor Molnar <an...@apache.org> wrote:
>
> Hi,
>
> We have the following logic to set enabledProtocols property for TLS 
> connections:
>
> String enabledProtocolsInput = 
> config.getProperty(x509Util.getSslEnabledProtocolsProperty());
> if (enabledProtocolsInput == null) {
>     // Use JDK defaults for enabled protocols:
>     // Protocol TLSv1.3 -> enabled protocols TLSv1.3 and TLSv1.2
>     // Protocol TLSv1.2 -> enabled protocols TLSv1.2
>     return sslContext.getDefaultSSLParameters().getProtocols();
> }
> …
>
> The comment is misleading: tested with JDK 11 and getProtocols() returns 
> TLSv1.3 only while the default protocol is TLSv1.3. I had to explicitly 
> enable TLSv1.2 in the config (ssl.enabledProtocols) to accept connections. 
> Unfortunately we don’t log this setting.
>
> Regards,
> Andor
>
>

Reply via email to