From 00047164ae29ace28e7d14eb028587ed92444edc Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 19 Nov 2021 17:37:05 -0600 Subject: [PATCH] always use NBConfiguration on SSL Factory --- .../nosqlbench/adapter/cqld4/Cqld4Space.java | 3 +- .../cql/statements/core/CQLSessionCache.java | 5 +- .../cql/statements/core/CQLSessionCache.java | 5 +- .../io/nosqlbench/driver/jmx/JMXActivity.java | 4 +- .../tcpclient/TCPClientActivity.java | 6 ++- .../tcpserver/TCPServerActivity.java | 7 ++- .../engine/api/util/SSLKsFactoryTest.java | 53 +++++++++++++------ .../engine/api/util/SSLKsFactory.java | 12 ----- 8 files changed, 58 insertions(+), 37 deletions(-) diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4Space.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4Space.java index 0f3c9417b..c203bacd1 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4Space.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4Space.java @@ -92,7 +92,8 @@ public class Cqld4Space { } - NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extract(cfg); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(cfg); + SSLContext ctx = SSLKsFactory.get().getContext(sslCfg); if (ctx != null) { builder.withSslContext(ctx); diff --git a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java index c83f9a5ed..b09172e8f 100644 --- a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java +++ b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java @@ -16,6 +16,7 @@ import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.api.scripting.ExprEvaluator; import io.nosqlbench.engine.api.scripting.GraalJsEvaluator; import io.nosqlbench.engine.api.util.SSLKsFactory; +import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.errors.BasicError; import org.apache.commons.codec.digest.DigestUtils; import org.apache.logging.log4j.LogManager; @@ -236,7 +237,9 @@ public class CQLSessionCache implements Shutdownable { .ifPresent(builder::withCompression); - SSLContext context = SSLKsFactory.get().getContext(activityDef.getParams()); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + SSLContext context = SSLKsFactory.get().getContext(sslCfg); + if (context != null) { builder.withSSL(RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).build()); } diff --git a/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java b/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java index 4954445f1..2a90844f7 100644 --- a/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java +++ b/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java @@ -15,6 +15,7 @@ import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.api.scripting.ExprEvaluator; import io.nosqlbench.engine.api.scripting.GraalJsEvaluator; import io.nosqlbench.engine.api.util.SSLKsFactory; +import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.errors.BasicError; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -238,7 +239,9 @@ public class CQLSessionCache implements Shutdownable { .ifPresent(builder::withCompression); - SSLContext context = SSLKsFactory.get().getContext(activityDef.getParams()); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + SSLContext context = SSLKsFactory.get().getContext(sslCfg); + if (context != null) { builder.withSSL(RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).build()); } diff --git a/driver-jmx/src/main/java/io/nosqlbench/driver/jmx/JMXActivity.java b/driver-jmx/src/main/java/io/nosqlbench/driver/jmx/JMXActivity.java index 9fa4f5a31..193884cbd 100644 --- a/driver-jmx/src/main/java/io/nosqlbench/driver/jmx/JMXActivity.java +++ b/driver-jmx/src/main/java/io/nosqlbench/driver/jmx/JMXActivity.java @@ -7,6 +7,7 @@ import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.OpDispenser; import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.util.SSLKsFactory; +import io.nosqlbench.nb.api.config.standard.NBConfiguration; import javax.net.ssl.SSLContext; @@ -24,7 +25,8 @@ public class JMXActivity extends SimpleActivity implements Activity { super.initActivity(); this.sequence = createOpSequenceFromCommands(ReadyJmxOp::new); setDefaultsFromOpSequence(sequence); - this.sslContext= SSLKsFactory.get().getContext(activityDef.getParams()); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + this.sslContext= SSLKsFactory.get().getContext(sslCfg); // TODO: Require qualified default with an op sequence as the input } diff --git a/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpclient/TCPClientActivity.java b/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpclient/TCPClientActivity.java index 132fce203..e71a71587 100644 --- a/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpclient/TCPClientActivity.java +++ b/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpclient/TCPClientActivity.java @@ -20,8 +20,9 @@ package io.nosqlbench.activitytype.tcpclient; import io.nosqlbench.activitytype.stdout.StdoutActivity; import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.util.SSLKsFactory; -import org.apache.logging.log4j.Logger; +import io.nosqlbench.nb.api.config.standard.NBConfiguration; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.net.SocketFactory; import java.io.IOException; @@ -46,7 +47,8 @@ public class TCPClientActivity extends StdoutActivity { SocketFactory socketFactory = SocketFactory.getDefault(); boolean sslEnabled = activityDef.getParams().getOptionalBoolean("ssl").orElse(false); if (sslEnabled) { - socketFactory = SSLKsFactory.get().createSocketFactory(activityDef.getParams()); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + socketFactory = SSLKsFactory.get().createSocketFactory(sslCfg); } String host = getActivityDef().getParams().getOptionalString("host").orElse("localhost"); diff --git a/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpserver/TCPServerActivity.java b/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpserver/TCPServerActivity.java index f88c3e75a..6d1bbf13b 100644 --- a/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpserver/TCPServerActivity.java +++ b/driver-tcp/src/main/java/io/nosqlbench/activitytype/tcpserver/TCPServerActivity.java @@ -20,8 +20,9 @@ package io.nosqlbench.activitytype.tcpserver; import io.nosqlbench.activitytype.stdout.StdoutActivity; import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.util.SSLKsFactory; -import org.apache.logging.log4j.Logger; +import io.nosqlbench.nb.api.config.standard.NBConfiguration; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.net.ServerSocketFactory; import javax.net.ssl.SSLServerSocketFactory; @@ -56,7 +57,9 @@ public class TCPServerActivity extends StdoutActivity { queue = new LinkedBlockingQueue<>(capacity); if (sslEnabled) { - socketFactory = SSLKsFactory.get().createSSLServerSocketFactory(activityDef.getParams()); + + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + socketFactory = SSLKsFactory.get().createSSLServerSocketFactory(sslCfg); } else { socketFactory = ServerSocketFactory.getDefault(); } diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java index 79e7adf87..7bd2f758b 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java @@ -18,6 +18,7 @@ package io.nosqlbench.engine.api.util; import io.nosqlbench.engine.api.activityimpl.ActivityDef; +import io.nosqlbench.nb.api.config.standard.NBConfiguration; import org.junit.jupiter.api.Test; import java.io.FileNotFoundException; @@ -33,7 +34,8 @@ public class SSLKsFactoryTest { "tlsversion=TLSv1.2", }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -46,7 +48,8 @@ public class SSLKsFactoryTest { "kspass=nosqlbench_client" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -60,7 +63,8 @@ public class SSLKsFactoryTest { "keyPassword=nosqlbench" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -71,7 +75,8 @@ public class SSLKsFactoryTest { "tspass=nosqlbench_server" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -82,7 +87,8 @@ public class SSLKsFactoryTest { "kspass=nosqlbench_client" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -94,7 +100,8 @@ public class SSLKsFactoryTest { "keyPassword=nosqlbench" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -104,7 +111,8 @@ public class SSLKsFactoryTest { "tlsversion=TLSv1.2", }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -116,7 +124,8 @@ public class SSLKsFactoryTest { "keyFilePath=src/test/resources/ssl/client.key" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -126,7 +135,8 @@ public class SSLKsFactoryTest { "caCertFilePath=src/test/resources/ssl/cacert.crt" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -137,7 +147,8 @@ public class SSLKsFactoryTest { "keyFilePath=src/test/resources/ssl/client.key" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); - assertThat(SSLKsFactory.get().getContext(activityDef.getParams())).isNotNull(); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThat(SSLKsFactory.get().getContext(sslCfg)).isNotNull(); } @Test @@ -149,8 +160,9 @@ public class SSLKsFactoryTest { "keyPassword=nosqlbench_client" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageMatching("Unable to load the keystore. Please check."); } @@ -163,8 +175,10 @@ public class SSLKsFactoryTest { "keyPassword=incorrect_password" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); + assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageMatching("Unable to init KeyManagerFactory. Please check.*"); } @@ -176,8 +190,9 @@ public class SSLKsFactoryTest { "tspass=nosqlbench_server" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageMatching("Unable to load the truststore. Please check."); } @@ -188,8 +203,9 @@ public class SSLKsFactoryTest { "caCertFilePath=src/test/resources/ssl/non_existing.pem" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageContaining("Unable to load caCert from") .withCauseInstanceOf(FileNotFoundException.class); } @@ -201,8 +217,9 @@ public class SSLKsFactoryTest { "certFilePath=src/test/resources/ssl/non_existing.pem" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageContaining("Unable to load cert from") .withCauseInstanceOf(FileNotFoundException.class); } @@ -214,8 +231,9 @@ public class SSLKsFactoryTest { "keyFilePath=src/test/resources/ssl/non_existing.pem" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageContaining("Unable to load key from") .withCauseInstanceOf(FileNotFoundException.class); } @@ -228,8 +246,9 @@ public class SSLKsFactoryTest { "keyFilePath=src/test/resources/ssl/client.key" }; ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); + NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams()); assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) + .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg)) .withMessageContaining("Unable to load key from") .withCauseInstanceOf(IllegalArgumentException.class); } diff --git a/nb-api/src/main/java/io/nosqlbench/engine/api/util/SSLKsFactory.java b/nb-api/src/main/java/io/nosqlbench/engine/api/util/SSLKsFactory.java index 80d6f4662..1576b034a 100644 --- a/nb-api/src/main/java/io/nosqlbench/engine/api/util/SSLKsFactory.java +++ b/nb-api/src/main/java/io/nosqlbench/engine/api/util/SSLKsFactory.java @@ -61,10 +61,6 @@ public class SSLKsFactory implements NBMapConfigurable { return instance; } - public ServerSocketFactory createSSLServerSocketFactory(Map cfgmap) { - return createSSLServerSocketFactory(getConfigModel().apply(cfgmap)); - } - public ServerSocketFactory createSSLServerSocketFactory(NBConfiguration cfg) { SSLContext context = getContext(cfg); if (context == null) { @@ -73,10 +69,6 @@ public class SSLKsFactory implements NBMapConfigurable { return context.getServerSocketFactory(); } - public SocketFactory createSocketFactory(Map cfgmap) { - return createSocketFactory(getConfigModel().apply(cfgmap)); - } - public SocketFactory createSocketFactory(NBConfiguration cfg) { SSLContext context = getContext(cfg); if (context == null) { @@ -85,10 +77,6 @@ public class SSLKsFactory implements NBMapConfigurable { return context.getSocketFactory(); } - public SSLContext getContext(Map cfgmap) { - return getContext(getConfigModel().apply(cfgmap)); - } - public SSLContext getContext(NBConfiguration cfg) { Optional sslParam = cfg.getOptional(SSL); if (sslParam.isPresent()) {