首页 > 解决方案 > 使用 ActiveMQ Artemis + TLS 进行 JMeter 测试

问题描述

我为我的应用程序设置了一个 JMeter 测试,它连接到 ActiveMQ Artemis。现在我想使用 JMeter 向代理发送消息,以便应用程序可以使用它。对于没有 TLS 的情况,它可以正常工作,但是使用 TLS 会出现密钥库问题。

我的测试计划如下所示:

实际上我不确定,如果我需要这样的连接 URL:

tcp://127.0.0.2:61617?ha=true;sslEnabled=true;trustStorePath=truststore.jks;trustStorePassword=<pw>

我的元素是:

jmeter.properties我设置了https.default.protocol=TLSv1.2. 在system.properties我已经设置:

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()]

ActiveMQ Artemisacceptor如下所示:

<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>

我得到以下日志:

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]

标签: ssljmeteractivemq-artemis

解决方案


在我看来,它IllegalArgumentException正在告诉您确切的问题所在。它说:

java.lang.IllegalArgumentException: Could not create keystore: [default = KeyStore.getDefaultType()] not found

在你的system.properties你有这一行:

javax.net.ssl.keyStoreType [default = KeyStore.getDefaultType()]

尝试改用这个:

javax.net.ssl.keyStoreType=JKS

推荐阅读