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

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new debc8abf484 HDDS-15176. Ozone SCM fails to start when gRPC cipher 
policy list includes unsupported cipher (#10192)
debc8abf484 is described below

commit debc8abf484fbeae0331b0df9668ab997d8c8e8f
Author: Zita Dombi <[email protected]>
AuthorDate: Thu May 7 15:34:36 2026 +0200

    HDDS-15176. Ozone SCM fails to start when gRPC cipher policy list includes 
unsupported cipher (#10192)
---
 .../common/transport/server/XceiverServerGrpc.java |  5 ++++-
 .../container/replication/ReplicationServer.java   |  5 ++++-
 .../hdds/security/ssl/TestGrpcTlsConfig.java       | 25 +++++++++++++++++++++-
 .../hdds/scm/ha/InterSCMGrpcProtocolService.java   |  5 ++++-
 .../hadoop/ozone/om/GrpcOzoneManagerServer.java    |  5 ++++-
 5 files changed, 40 insertions(+), 5 deletions(-)

diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java
index 7521b460467..31dd1cb19e4 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/XceiverServerGrpc.java
@@ -58,6 +58,7 @@
 import org.apache.ratis.thirdparty.io.netty.channel.nio.NioEventLoopGroup;
 import 
org.apache.ratis.thirdparty.io.netty.channel.socket.nio.NioServerSocketChannel;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.SslContextBuilder;
+import 
org.apache.ratis.thirdparty.io.netty.handler.ssl.SupportedCipherSuiteFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -146,7 +147,9 @@ public XceiverServerGrpc(DatanodeDetails datanodeDetails,
         SslContextBuilder sslContextBuilder = GrpcSslContexts.configure(
             sslClientContextBuilder, secConf.getGrpcSslProvider());
         sslContextBuilder.protocols(secConf.getGrpcTlsProtocols());
-        sslContextBuilder.ciphers(secConf.getGrpcTlsCiphers());
+        sslContextBuilder.ciphers(
+            secConf.getGrpcTlsCiphers(),
+            SupportedCipherSuiteFilter.INSTANCE);
         nettyServerBuilder.sslContext(sslContextBuilder.build());
       } catch (Exception ex) {
         LOG.error("Unable to setup TLS for secure datanode GRPC endpoint.", 
ex);
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ReplicationServer.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ReplicationServer.java
index 3c1c6a54efb..f2d06c2f6b1 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ReplicationServer.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ReplicationServer.java
@@ -44,6 +44,7 @@
 import org.apache.ratis.thirdparty.io.grpc.netty.NettyServerBuilder;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.ClientAuth;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.SslContextBuilder;
+import 
org.apache.ratis.thirdparty.io.netty.handler.ssl.SupportedCipherSuiteFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -121,7 +122,9 @@ public void init() {
         sslContextBuilder.clientAuth(ClientAuth.REQUIRE);
         sslContextBuilder.trustManager(caClient.getTrustManager());
         sslContextBuilder.protocols(secConf.getGrpcTlsProtocols());
-        sslContextBuilder.ciphers(secConf.getGrpcTlsCiphers());
+        sslContextBuilder.ciphers(
+            secConf.getGrpcTlsCiphers(),
+            SupportedCipherSuiteFilter.INSTANCE);
 
         nettyServerBuilder.sslContext(sslContextBuilder.build());
       } catch (IOException ex) {
diff --git 
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/ssl/TestGrpcTlsConfig.java
 
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/ssl/TestGrpcTlsConfig.java
index 482a86b79de..443312282fd 100644
--- 
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/ssl/TestGrpcTlsConfig.java
+++ 
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/ssl/TestGrpcTlsConfig.java
@@ -51,6 +51,7 @@
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.ClientAuth;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.SslContextBuilder;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.SslProvider;
+import 
org.apache.ratis.thirdparty.io.netty.handler.ssl.SupportedCipherSuiteFilter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -146,6 +147,26 @@ public void testDefaultConfigAcceptsConnection() throws 
Exception {
     }
   }
 
+  @Test
+  public void testServerIgnoresUnsupportedConfiguredCiphers() throws Exception 
{
+    Server server = null;
+    ManagedChannel channel = null;
+    try {
+      String[] configuredCiphers = {
+          "TLS_FAKE_CIPHER_SUITE",
+          "TLS_AES_256_GCM_SHA384"
+      };
+      server = setupServer(new String[]{"TLSv1.3"}, configuredCiphers);
+      server.start();
+      channel = setupClient(server.getPort(), new String[]{"TLSv1.3"}, new 
String[]{"TLS_AES_256_GCM_SHA384"});
+      XceiverClientProtocolServiceStub asyncStub = 
XceiverClientProtocolServiceGrpc.newStub(channel);
+      ContainerCommandResponseProto response = sendRequest(asyncStub);
+      assertEquals(SUCCESS, response.getResult());
+    } finally {
+      shutdown(channel, server);
+    }
+  }
+
   private Server setupServer(String[] protocols, String[] ciphers)
       throws Exception {
     NettyServerBuilder nettyServerBuilder = 
NettyServerBuilder.forPort(0).addService(new GrpcService());
@@ -157,7 +178,9 @@ private Server setupServer(String[] protocols, String[] 
ciphers)
       sslContextBuilder.protocols(protocols);
     }
     if (ciphers != null) {
-      sslContextBuilder.ciphers(Arrays.asList(ciphers));
+      sslContextBuilder.ciphers(
+          Arrays.asList(ciphers),
+          SupportedCipherSuiteFilter.INSTANCE);
     }
     nettyServerBuilder.sslContext(sslContextBuilder.build());
     return nettyServerBuilder.build();
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/InterSCMGrpcProtocolService.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/InterSCMGrpcProtocolService.java
index 1aa1fa7bfc9..8b4086a69d9 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/InterSCMGrpcProtocolService.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/InterSCMGrpcProtocolService.java
@@ -35,6 +35,7 @@
 import org.apache.ratis.thirdparty.io.grpc.netty.NettyServerBuilder;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.ClientAuth;
 import org.apache.ratis.thirdparty.io.netty.handler.ssl.SslContextBuilder;
+import 
org.apache.ratis.thirdparty.io.netty.handler.ssl.SupportedCipherSuiteFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -75,7 +76,9 @@ public class InterSCMGrpcProtocolService {
             sslServerContextBuilder, securityConfig.getGrpcSslProvider());
         sslContextBuilder.clientAuth(ClientAuth.REQUIRE);
         sslContextBuilder.protocols(securityConfig.getGrpcTlsProtocols());
-        sslContextBuilder.ciphers(securityConfig.getGrpcTlsCiphers());
+        sslContextBuilder.ciphers(
+            securityConfig.getGrpcTlsCiphers(),
+            SupportedCipherSuiteFilter.INSTANCE);
         nettyServerBuilder.sslContext(sslContextBuilder.build());
       } catch (Exception ex) {
         LOG.error("Unable to setup TLS for secure " +
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/GrpcOzoneManagerServer.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/GrpcOzoneManagerServer.java
index 520a434a69b..a05dc47c9b0 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/GrpcOzoneManagerServer.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/GrpcOzoneManagerServer.java
@@ -38,6 +38,7 @@
 import io.netty.channel.socket.nio.NioServerSocketChannel;
 import io.netty.handler.ssl.SslContextBuilder;
 import io.netty.handler.ssl.SslProvider;
+import io.netty.handler.ssl.SupportedCipherSuiteFilter;
 import java.io.IOException;
 import java.util.OptionalInt;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -165,7 +166,9 @@ public void init(OzoneManagerProtocolServerSideTranslatorPB 
omTranslator,
             SslProvider.valueOf(omServerConfig.get(HDDS_GRPC_TLS_PROVIDER,
                 HDDS_GRPC_TLS_PROVIDER_DEFAULT)));
         sslContextBuilder.protocols(secConf.getGrpcTlsProtocols());
-        sslContextBuilder.ciphers(secConf.getGrpcTlsCiphers());
+        sslContextBuilder.ciphers(
+            secConf.getGrpcTlsCiphers(),
+            SupportedCipherSuiteFilter.INSTANCE);
         nettyServerBuilder.sslContext(sslContextBuilder.build());
       } catch (Exception ex) {
         LOG.error("Unable to setup TLS for secure Om S3g GRPC channel.", ex);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to