如何解决使用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>
我的元素是:
- 密钥库配置
- 具有初始上下文工厂:
org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
的JMS Publisher(在线程组中)
在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 Artemis acceptor
看起来像这样:
<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]
解决方法
在我看来,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。