always use NBConfiguration on SSL Factory

This commit is contained in:
Jonathan Shook 2021-11-19 17:37:05 -06:00
parent f71f98f046
commit 00047164ae
8 changed files with 58 additions and 37 deletions

View File

@ -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); SSLContext ctx = SSLKsFactory.get().getContext(sslCfg);
if (ctx != null) { if (ctx != null) {
builder.withSslContext(ctx); builder.withSslContext(ctx);

View File

@ -16,6 +16,7 @@ import io.nosqlbench.engine.api.metrics.ActivityMetrics;
import io.nosqlbench.engine.api.scripting.ExprEvaluator; import io.nosqlbench.engine.api.scripting.ExprEvaluator;
import io.nosqlbench.engine.api.scripting.GraalJsEvaluator; import io.nosqlbench.engine.api.scripting.GraalJsEvaluator;
import io.nosqlbench.engine.api.util.SSLKsFactory; import io.nosqlbench.engine.api.util.SSLKsFactory;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.errors.BasicError;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
@ -236,7 +237,9 @@ public class CQLSessionCache implements Shutdownable {
.ifPresent(builder::withCompression); .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) { if (context != null) {
builder.withSSL(RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).build()); builder.withSSL(RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).build());
} }

View File

@ -15,6 +15,7 @@ import io.nosqlbench.engine.api.metrics.ActivityMetrics;
import io.nosqlbench.engine.api.scripting.ExprEvaluator; import io.nosqlbench.engine.api.scripting.ExprEvaluator;
import io.nosqlbench.engine.api.scripting.GraalJsEvaluator; import io.nosqlbench.engine.api.scripting.GraalJsEvaluator;
import io.nosqlbench.engine.api.util.SSLKsFactory; import io.nosqlbench.engine.api.util.SSLKsFactory;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.errors.BasicError;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -238,7 +239,9 @@ public class CQLSessionCache implements Shutdownable {
.ifPresent(builder::withCompression); .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) { if (context != null) {
builder.withSSL(RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).build()); builder.withSSL(RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).build());
} }

View File

@ -7,6 +7,7 @@ import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser; import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
import io.nosqlbench.engine.api.util.SSLKsFactory; import io.nosqlbench.engine.api.util.SSLKsFactory;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
@ -24,7 +25,8 @@ public class JMXActivity extends SimpleActivity implements Activity {
super.initActivity(); super.initActivity();
this.sequence = createOpSequenceFromCommands(ReadyJmxOp::new); this.sequence = createOpSequenceFromCommands(ReadyJmxOp::new);
setDefaultsFromOpSequence(sequence); 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 // TODO: Require qualified default with an op sequence as the input
} }

View File

@ -20,8 +20,9 @@ package io.nosqlbench.activitytype.tcpclient;
import io.nosqlbench.activitytype.stdout.StdoutActivity; import io.nosqlbench.activitytype.stdout.StdoutActivity;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.util.SSLKsFactory; 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.LogManager;
import org.apache.logging.log4j.Logger;
import javax.net.SocketFactory; import javax.net.SocketFactory;
import java.io.IOException; import java.io.IOException;
@ -46,7 +47,8 @@ public class TCPClientActivity extends StdoutActivity {
SocketFactory socketFactory = SocketFactory.getDefault(); SocketFactory socketFactory = SocketFactory.getDefault();
boolean sslEnabled = activityDef.getParams().getOptionalBoolean("ssl").orElse(false); boolean sslEnabled = activityDef.getParams().getOptionalBoolean("ssl").orElse(false);
if (sslEnabled) { 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"); String host = getActivityDef().getParams().getOptionalString("host").orElse("localhost");

View File

@ -20,8 +20,9 @@ package io.nosqlbench.activitytype.tcpserver;
import io.nosqlbench.activitytype.stdout.StdoutActivity; import io.nosqlbench.activitytype.stdout.StdoutActivity;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.util.SSLKsFactory; 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.LogManager;
import org.apache.logging.log4j.Logger;
import javax.net.ServerSocketFactory; import javax.net.ServerSocketFactory;
import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLServerSocketFactory;
@ -56,7 +57,9 @@ public class TCPServerActivity extends StdoutActivity {
queue = new LinkedBlockingQueue<>(capacity); queue = new LinkedBlockingQueue<>(capacity);
if (sslEnabled) { if (sslEnabled) {
socketFactory = SSLKsFactory.get().createSSLServerSocketFactory(activityDef.getParams());
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
socketFactory = SSLKsFactory.get().createSSLServerSocketFactory(sslCfg);
} else { } else {
socketFactory = ServerSocketFactory.getDefault(); socketFactory = ServerSocketFactory.getDefault();
} }

View File

@ -18,6 +18,7 @@
package io.nosqlbench.engine.api.util; package io.nosqlbench.engine.api.util;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -33,7 +34,8 @@ public class SSLKsFactoryTest {
"tlsversion=TLSv1.2", "tlsversion=TLSv1.2",
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -46,7 +48,8 @@ public class SSLKsFactoryTest {
"kspass=nosqlbench_client" "kspass=nosqlbench_client"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -60,7 +63,8 @@ public class SSLKsFactoryTest {
"keyPassword=nosqlbench" "keyPassword=nosqlbench"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -71,7 +75,8 @@ public class SSLKsFactoryTest {
"tspass=nosqlbench_server" "tspass=nosqlbench_server"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -82,7 +87,8 @@ public class SSLKsFactoryTest {
"kspass=nosqlbench_client" "kspass=nosqlbench_client"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -94,7 +100,8 @@ public class SSLKsFactoryTest {
"keyPassword=nosqlbench" "keyPassword=nosqlbench"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -104,7 +111,8 @@ public class SSLKsFactoryTest {
"tlsversion=TLSv1.2", "tlsversion=TLSv1.2",
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -116,7 +124,8 @@ public class SSLKsFactoryTest {
"keyFilePath=src/test/resources/ssl/client.key" "keyFilePath=src/test/resources/ssl/client.key"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -126,7 +135,8 @@ public class SSLKsFactoryTest {
"caCertFilePath=src/test/resources/ssl/cacert.crt" "caCertFilePath=src/test/resources/ssl/cacert.crt"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -137,7 +147,8 @@ public class SSLKsFactoryTest {
"keyFilePath=src/test/resources/ssl/client.key" "keyFilePath=src/test/resources/ssl/client.key"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); 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 @Test
@ -149,8 +160,9 @@ public class SSLKsFactoryTest {
"keyPassword=nosqlbench_client" "keyPassword=nosqlbench_client"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageMatching("Unable to load the keystore. Please check."); .withMessageMatching("Unable to load the keystore. Please check.");
} }
@ -163,8 +175,10 @@ public class SSLKsFactoryTest {
"keyPassword=incorrect_password" "keyPassword=incorrect_password"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageMatching("Unable to init KeyManagerFactory. Please check.*"); .withMessageMatching("Unable to init KeyManagerFactory. Please check.*");
} }
@ -176,8 +190,9 @@ public class SSLKsFactoryTest {
"tspass=nosqlbench_server" "tspass=nosqlbench_server"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageMatching("Unable to load the truststore. Please check."); .withMessageMatching("Unable to load the truststore. Please check.");
} }
@ -188,8 +203,9 @@ public class SSLKsFactoryTest {
"caCertFilePath=src/test/resources/ssl/non_existing.pem" "caCertFilePath=src/test/resources/ssl/non_existing.pem"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageContaining("Unable to load caCert from") .withMessageContaining("Unable to load caCert from")
.withCauseInstanceOf(FileNotFoundException.class); .withCauseInstanceOf(FileNotFoundException.class);
} }
@ -201,8 +217,9 @@ public class SSLKsFactoryTest {
"certFilePath=src/test/resources/ssl/non_existing.pem" "certFilePath=src/test/resources/ssl/non_existing.pem"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageContaining("Unable to load cert from") .withMessageContaining("Unable to load cert from")
.withCauseInstanceOf(FileNotFoundException.class); .withCauseInstanceOf(FileNotFoundException.class);
} }
@ -214,8 +231,9 @@ public class SSLKsFactoryTest {
"keyFilePath=src/test/resources/ssl/non_existing.pem" "keyFilePath=src/test/resources/ssl/non_existing.pem"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageContaining("Unable to load key from") .withMessageContaining("Unable to load key from")
.withCauseInstanceOf(FileNotFoundException.class); .withCauseInstanceOf(FileNotFoundException.class);
} }
@ -228,8 +246,9 @@ public class SSLKsFactoryTest {
"keyFilePath=src/test/resources/ssl/client.key" "keyFilePath=src/test/resources/ssl/client.key"
}; };
ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params)); ActivityDef activityDef = ActivityDef.parseActivityDef(String.join(";", params));
NBConfiguration sslCfg = SSLKsFactory.get().getConfigModel().extractConfig(activityDef.getParams());
assertThatExceptionOfType(RuntimeException.class) assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> SSLKsFactory.get().getContext(activityDef.getParams())) .isThrownBy(() -> SSLKsFactory.get().getContext(sslCfg))
.withMessageContaining("Unable to load key from") .withMessageContaining("Unable to load key from")
.withCauseInstanceOf(IllegalArgumentException.class); .withCauseInstanceOf(IllegalArgumentException.class);
} }

View File

@ -61,10 +61,6 @@ public class SSLKsFactory implements NBMapConfigurable {
return instance; return instance;
} }
public ServerSocketFactory createSSLServerSocketFactory(Map<String, Object> cfgmap) {
return createSSLServerSocketFactory(getConfigModel().apply(cfgmap));
}
public ServerSocketFactory createSSLServerSocketFactory(NBConfiguration cfg) { public ServerSocketFactory createSSLServerSocketFactory(NBConfiguration cfg) {
SSLContext context = getContext(cfg); SSLContext context = getContext(cfg);
if (context == null) { if (context == null) {
@ -73,10 +69,6 @@ public class SSLKsFactory implements NBMapConfigurable {
return context.getServerSocketFactory(); return context.getServerSocketFactory();
} }
public SocketFactory createSocketFactory(Map<String, Object> cfgmap) {
return createSocketFactory(getConfigModel().apply(cfgmap));
}
public SocketFactory createSocketFactory(NBConfiguration cfg) { public SocketFactory createSocketFactory(NBConfiguration cfg) {
SSLContext context = getContext(cfg); SSLContext context = getContext(cfg);
if (context == null) { if (context == null) {
@ -85,10 +77,6 @@ public class SSLKsFactory implements NBMapConfigurable {
return context.getSocketFactory(); return context.getSocketFactory();
} }
public SSLContext getContext(Map<String, Object> cfgmap) {
return getContext(getConfigModel().apply(cfgmap));
}
public SSLContext getContext(NBConfiguration cfg) { public SSLContext getContext(NBConfiguration cfg) {
Optional<String> sslParam = cfg.getOptional(SSL); Optional<String> sslParam = cfg.getOptional(SSL);
if (sslParam.isPresent()) { if (sslParam.isPresent()) {