This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-3 by this push:
     new 2e63952def5 HBASE-29444 Default to JRE default TLS protcol list (#7142)
2e63952def5 is described below

commit 2e63952def50ad5f56c0a49a5ffc04ae10fc4f82
Author: Istvan Toth <st...@apache.org>
AuthorDate: Mon Jul 28 08:48:00 2025 +0200

    HBASE-29444 Default to JRE default TLS protcol list (#7142)
    
    Signed-off-by: Duo Zhang <zhang...@apache.org>
    (cherry picked from commit bdefd1e124912f654baeac8e5ae9229a29095017)
---
 .../apache/hadoop/hbase/io/crypto/tls/X509Util.java   | 19 ++++++++++++++-----
 .../hadoop/hbase/io/crypto/tls/TestX509Util.java      | 11 ++++++++++-
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/tls/X509Util.java
 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/tls/X509Util.java
index a233050994f..273cf938c87 100644
--- 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/tls/X509Util.java
+++ 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/tls/X509Util.java
@@ -87,7 +87,6 @@ public final class X509Util {
   public static final String TLS_CIPHER_SUITES = CONFIG_PREFIX + 
"ciphersuites";
   public static final String TLS_CERT_RELOAD = CONFIG_PREFIX + "certReload";
   public static final String TLS_USE_OPENSSL = CONFIG_PREFIX + "useOpenSsl";
-  public static final String DEFAULT_PROTOCOL = "TLSv1.2";
 
   //
   // Server-side specific configs
@@ -206,7 +205,10 @@ public final class X509Util {
     }
 
     sslContextBuilder.enableOcsp(sslOcspEnabled);
-    sslContextBuilder.protocols(getEnabledProtocols(config));
+    String[] enabledProtocols = getEnabledProtocols(config);
+    if (enabledProtocols != null) {
+      sslContextBuilder.protocols(enabledProtocols);
+    }
     String[] cipherSuites = getCipherSuites(config);
     if (cipherSuites != null) {
       sslContextBuilder.ciphers(Arrays.asList(cipherSuites));
@@ -276,7 +278,10 @@ public final class X509Util {
     }
 
     sslContextBuilder.enableOcsp(sslOcspEnabled);
-    sslContextBuilder.protocols(getEnabledProtocols(config));
+    String[] enabledProtocols = getEnabledProtocols(config);
+    if (enabledProtocols != null) {
+      sslContextBuilder.protocols(enabledProtocols);
+    }
     String[] cipherSuites = getCipherSuites(config);
     if (cipherSuites != null) {
       sslContextBuilder.ciphers(Arrays.asList(cipherSuites));
@@ -391,9 +396,13 @@ public final class X509Util {
   private static String[] getEnabledProtocols(Configuration config) {
     String enabledProtocolsInput = config.get(TLS_ENABLED_PROTOCOLS);
     if (enabledProtocolsInput == null) {
-      return new String[] { config.get(TLS_CONFIG_PROTOCOL, DEFAULT_PROTOCOL) 
};
+      enabledProtocolsInput = config.get(TLS_CONFIG_PROTOCOL);
+    }
+    if (enabledProtocolsInput != null) {
+      return enabledProtocolsInput.split(",");
+    } else {
+      return null;
     }
-    return enabledProtocolsInput.split(",");
   }
 
   private static String[] getCipherSuites(Configuration config) {
diff --git 
a/hbase-common/src/test/java/org/apache/hadoop/hbase/io/crypto/tls/TestX509Util.java
 
b/hbase-common/src/test/java/org/apache/hadoop/hbase/io/crypto/tls/TestX509Util.java
index 7f8d7c82b89..bc70b844e05 100644
--- 
a/hbase-common/src/test/java/org/apache/hadoop/hbase/io/crypto/tls/TestX509Util.java
+++ 
b/hbase-common/src/test/java/org/apache/hadoop/hbase/io/crypto/tls/TestX509Util.java
@@ -96,7 +96,16 @@ public class TestX509Util extends 
AbstractTestX509Parameterized {
   public void testCreateSSLContextWithoutCustomProtocol() throws Exception {
     SslContext sslContext = X509Util.createSslContextForClient(conf);
     ByteBufAllocator byteBufAllocatorMock = mock(ByteBufAllocator.class);
-    assertArrayEquals(new String[] { X509Util.DEFAULT_PROTOCOL },
+    assertArrayEquals(new String[] { "TLSv1.3", "TLSv1.2" },
+      sslContext.newEngine(byteBufAllocatorMock).getEnabledProtocols());
+  }
+
+  @Test
+  public void testCreateTcNativeSSLContextWithoutCustomProtocol() throws 
Exception {
+    conf.set(X509Util.TLS_USE_OPENSSL, "true");
+    SslContext sslContext = X509Util.createSslContextForClient(conf);
+    ByteBufAllocator byteBufAllocatorMock = mock(ByteBufAllocator.class);
+    assertArrayEquals(new String[] { "TLSv1.3", "TLSv1.2" },
       sslContext.newEngine(byteBufAllocatorMock).getEnabledProtocols());
   }
 

Reply via email to