Reputation: 369
I have set up an JMeter test for my application, which is connected to ActiveMQ Artemis. Now I want to send messages to the broker using JMeter so that the application can consume it. For the case without TLS it works fine, but with TLS there are keystore problems.
My test plan looks like the following:
Actually I don't know for sure, if I need the connection URL like this:
tcp://127.0.0.2:61617?ha=true;sslEnabled=true;trustStorePath=truststore.jks;trustStorePassword=<pw>
My elements are:
org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
In jmeter.properties
I have set https.default.protocol=TLSv1.2
. In system.properties
I have set:
javax.net.ssl.trustStore=D:/apache-jmeter-5.2.1/bin/truststore.jks
javax.net.ssl.trustStorePassword=<secret>
javax.net.ssl.keyStore=D:/apache-jmeter-5.2.1/bin/broker.jks
javax.net.ssl.keyStorePassword=<secret>
javax.net.ssl.keyStoreType [default = KeyStore.getDefaultType()]
The ActiveMQ Artemis acceptor
looks like this:
<acceptor name="artemis-tls">tcp://127.0.0.2:61617?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true;sslEnabled=true;keyStorePath=broker1.jks;keyStorePassword=<secret>;enabledProtocols=TLSv1.2</acceptor>
I get following logs:
2020-09-24 16:20:59,295 WARN o.a.j.c.KeystoreConfig: https.use.cached.ssl.context property must be set to false to ensure Multiple Certificates are used
2020-09-24 16:20:59,296 INFO o.a.j.c.KeystoreConfig: Configuring Keystore with (preload: 'True', startIndex: 0, endIndex: 10000, clientCertAliasVarName: 'certAlias')
2020-09-24 16:20:59,296 INFO o.a.j.u.SSLManager: JmeterKeyStore Location: D:\apache-jmeter-5.2.1\bin\broker.jks type [default = KeyStore.getDefaultType()]
2020-09-24 16:20:59,296 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[StandardJMeterEngine,6,main]
java.lang.IllegalArgumentException: Could not create keystore: [default = KeyStore.getDefaultType()] not found
at org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:126) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.util.SSLManager.configureKeystore(SSLManager.java:309) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.config.KeystoreConfig.testStarted(KeystoreConfig.java:99) ~[ApacheJMeter_components.jar:5.2.1]
at org.apache.jmeter.config.KeystoreConfig.testStarted(KeystoreConfig.java:63) ~[ApacheJMeter_components.jar:5.2.1]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:206) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:381) ~[ApacheJMeter_core.jar:5.2.1]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_162]
Upvotes: 0
Views: 1276
Reputation: 35038
It looks to me like the IllegalArgumentException
is telling you exactly what the problem is. It says:
java.lang.IllegalArgumentException: Could not create keystore: [default = KeyStore.getDefaultType()] not found
In your system.properties
you have this line:
javax.net.ssl.keyStoreType [default = KeyStore.getDefaultType()]
Try using this instead:
javax.net.ssl.keyStoreType=JKS
Upvotes: 3