diff --git a/CHANGES.txt b/CHANGES.txt index d07a0a53b8..5a12109fdc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.0.12 + * Fix BulkLoader ignoring cipher suites options (CASSANDRA-18582) * Migrate Python optparse to argparse (CASSANDRA-17914) Merged from 3.11: * Moved jflex from runtime to build dependencies (CASSANDRA-18664) diff --git a/src/java/org/apache/cassandra/config/EncryptionOptions.java b/src/java/org/apache/cassandra/config/EncryptionOptions.java index 93668d9d04..1ded303724 100644 --- a/src/java/org/apache/cassandra/config/EncryptionOptions.java +++ b/src/java/org/apache/cassandra/config/EncryptionOptions.java @@ -288,7 +288,7 @@ public class EncryptionOptions public String[] cipherSuitesArray() { - return cipher_suites == null ? new String[0] : cipher_suites.toArray(new String[0]); + return cipher_suites == null ? null : cipher_suites.toArray(new String[0]); } public TlsEncryptionPolicy tlsEncryptionPolicy() diff --git a/src/java/org/apache/cassandra/tools/BulkLoader.java b/src/java/org/apache/cassandra/tools/BulkLoader.java index f68c74d05e..312d39604f 100644 --- a/src/java/org/apache/cassandra/tools/BulkLoader.java +++ b/src/java/org/apache/cassandra/tools/BulkLoader.java @@ -264,8 +264,9 @@ public class BulkLoader // Temporarily override newSSLEngine to set accepted protocols until it is added to // RemoteEndpointAwareJdkSSLOptions. See CASSANDRA-13325 and CASSANDRA-16362. - RemoteEndpointAwareJdkSSLOptions sslOptions = new RemoteEndpointAwareJdkSSLOptions(sslContext, null) + RemoteEndpointAwareJdkSSLOptions sslOptions = new RemoteEndpointAwareJdkSSLOptions(sslContext, clientEncryptionOptions.cipherSuitesArray()) { + @Override protected SSLEngine newSSLEngine(SocketChannel channel, InetSocketAddress remoteEndpoint) { SSLEngine engine = super.newSSLEngine(channel, remoteEndpoint); diff --git a/test/distributed/org/apache/cassandra/distributed/test/SSTableLoaderEncryptionOptionsTest.java b/test/distributed/org/apache/cassandra/distributed/test/SSTableLoaderEncryptionOptionsTest.java index c9b6c6205a..91000e06eb 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/SSTableLoaderEncryptionOptionsTest.java +++ b/test/distributed/org/apache/cassandra/distributed/test/SSTableLoaderEncryptionOptionsTest.java @@ -96,6 +96,7 @@ public class SSTableLoaderEncryptionOptionsTest extends AbstractEncryptionOption "--truststore", validTrustStorePath, "--truststore-password", validTrustStorePassword, "--conf-path", "test/conf/sstableloader_with_encryption.yaml", + "--ssl-ciphers", "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA", sstables_to_upload.getAbsolutePath()); tool.assertOnCleanExit(); assertTrue(tool.getStdout().contains("Summary statistics")); diff --git a/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java b/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java index cf0eede34c..dbdd49f1aa 100644 --- a/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java +++ b/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java @@ -165,8 +165,9 @@ public class JavaDriverClient // Temporarily override newSSLEngine to set accepted protocols until it is added to // RemoteEndpointAwareJdkSSLOptions. See CASSANDRA-13325 and CASSANDRA-16362. - RemoteEndpointAwareJdkSSLOptions sslOptions = new RemoteEndpointAwareJdkSSLOptions(sslContext, null) + RemoteEndpointAwareJdkSSLOptions sslOptions = new RemoteEndpointAwareJdkSSLOptions(sslContext, encryptionOptions.cipherSuitesArray()) { + @Override protected SSLEngine newSSLEngine(SocketChannel channel, InetSocketAddress remoteEndpoint) { SSLEngine engine = super.newSSLEngine(channel, remoteEndpoint);