Galadriel
Galadriel

Reputation: 369

JMeter test with ActiveMQ Artemis + TLS

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:

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

Answers (1)

Justin Bertram
Justin Bertram

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

Related Questions