使用带有 https 协议的 JMeter + Maven

Posted

技术标签:

【中文标题】使用带有 https 协议的 JMeter + Maven【英文标题】:Using JMeter + Maven with https protocol 【发布时间】:2011-04-09 16:25:42 【问题描述】:

我一直在努力使 https 请求与 JMeter+Maven 一起工作。 整个场景是 - 启动应用程序 URL > 登录到应用程序(这是 https)> 在主页上(这是 http)

我使用 JMeter 的 HTTP 代理记录了这些测试。然后按照here的说明将采样器的“HTTP请求协议”改为“https”

现在,当我执行 Maven 测试表单时,我遇到以下异常 JMeter 日志 -

2010/09/08 16:25:38 ERROR - jmeter.util.JsseSSLManager: Exception occurred java.lang.NullPointerException
at org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:132)
at org.apache.jmeter.util.JsseSSLManager.getContext(JsseSSLManager.java:141)
at org.apache.jmeter.util.JsseSSLManager.<init>(JsseSSLManager.java:88)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.jmeter.util.SSLManager.getInstance(SSLManager.java:231)
at org.apache.jmeter.protocol.http.sampler.HTTPSampler.setupConnection(HTTPSampler.java:148)
at org.apache.jmeter.protocol.http.sampler.HTTPSampler.sample(HTTPSampler.java:404)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:658)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:647)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247)
at java.lang.Thread.run(Thread.java:619)

 2010/09/08 16:25:38 INFO  - jmeter.util.JsseSSLManager: JsseSSLManager installed 
 2010/09/08 16:25:38 WARN  - jmeter.protocol.http.sampler.HTTPSampler: You may have forgotten to set the ssl.provider property in jmeter.properties java.lang.IllegalStateException: SSLContextImpl is not initialized
at com.sun.net.ssl.internal.ssl.SSLContextImpl.engineGetSocketFactory(SSLContextImpl.java:145)
at javax.net.ssl.SSLContext.getSocketFactory(SSLContext.java:260)
at com.sun.net.ssl.SSLContextSpiWrapper.engineGetSocketFactory(SSLSecurity.java:365)
at com.sun.net.ssl.SSLContext.getSocketFactory(SSLContext.java:168)
at org.apache.jmeter.util.JsseSSLManager.setContext(JsseSSLManager.java:101)
at org.apache.jmeter.protocol.http.sampler.HTTPSampler.setupConnection(HTTPSampler.java:160)
at org.apache.jmeter.protocol.http.sampler.HTTPSampler.sample(HTTPSampler.java:404)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:658)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:647)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247)
at java.lang.Thread.run(Thread.java:619)

当我从 JMeter 本身执行这些测试时,我没有遇到任何异常。但是在 Maven 中调用测试会导致这个问题

你们有没有能够使用 JMeter+Maven 在 https 上成功执行测试

提前致谢 塔伦K

【问题讨论】:

它看起来像是证书问题“在 org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:132)” 可能是 Maven 没有正确访问密钥库吗? 嗯.. 好吧,我会说我必须从这里手动安装 Maven-Jmeter 插件 - sass4j.dev.java.net/files/documents/8536/91313/… 因为目前没有公共仓库保留这个插件。我是 Maven-Jmeter 的新手,我如何知道 Maven 是否没有正确访问密钥库? 〜T 我查看了测试后生成的 xml 文件,它的大部分行都说 - "" 第一个示例是请求中的 https...我发现这更令人惊讶,因为当我从 JMeter it self 执行测试时,我没有遇到任何异常! 思考: 1. 你是否收到过严格的 HTTP 请求才能在 Maven 中工作? 2. Maven是否指向与Jmeter相同的jre? jre\lib\security 是 cacert 文件所在的位置并有助于提高安全性。 是的 http 与 Maven 完美搭配。我偶然发现了这个-jajakarta.org/jmeter/1.5.1/en/running.html,它谈到了将 JSSE 用于 JMeter。我正在使用 java 1.6 并在 jre/lib 文件夹中看到“jsse.jar”。我还设置了 JMeter 属性 - “ssl.provider=com.sun.net.ssl.internal.ssl.Provider”,但我仍然遇到这个问题。恐怕我的 JMeter 属性文件可能没有被考虑...... 【参考方案1】:

JMeter 组建议我使用“jmeter.jar”的更新版本,而不是 JMeter Maven 插件提供的版本....我将把这个问题标记为已回答并在这方面提交了another query。

感谢你的时间黑色

~T

【讨论】:

【参考方案2】:

是的,jmeter 与 https 一起工作,我能够通过 maven 和 https 的 jemter 测试,尝试使用 keytool 将证书添加到 server.xml 指向的 cacerts

【讨论】:

以上是关于使用带有 https 协议的 JMeter + Maven的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter录制HTTPS协议脚本

如何在 JMeter 中使用 MQTT 插件

jmeter HTTPS和HTTP的区别

使用Jmeter并发websocket协议项目

jmeter之-用Firefox录制https协议证书问题

JMeter基础 — 使用JMeter测试WebSocket接口