我正在 JMeter 上录制基于 JSF 的 Web 应用程序的 https 会话,但它不工作。
目标应用程序托管在: AWS
JMeter 版本: 2.9 r1437961
浏览器: Chrome 版本 29.0.1547.65
Java: java 版本“1.6.0_27”
OpenJDK 运行时环境 (IcedTea6 1.12.5) (6b27-1.12.5-0ubuntu0.12.04.1)
OpenJDK Server VM(build 20.0-b12,混合模式)
操作系统: Ubuntu 12.04
代理服务器配置:
端口:8084
目标控制器:测试计划 > 线程组
捕获 HTTP 标头已选中。
HTTP 示例设置:
类型:未选中。遵循重定向并选中使用 KeepAlive。
要排除的 URL 模式:
1. 添加了建议的排除
2. .*\.jsf
抛出的异常(来自 JMeter.log):
ERROR - jmeter.protocol.http.proxy.Proxy: java.net.SocketException: Connection closed by remote host
at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1377)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:62)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at org.apache.jmeter.protocol.http.proxy.Proxy.writeToClient(Proxy.java:404)
at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:218)
ERROR - jmeter.protocol.http.proxy.Proxy: Problem with SSL certificate? Ensure browser is set to accept the JMeter proxy cert: Connection closed by remote host java.net.SocketException: Connection closed by remote host
at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1377)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:62)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at org.apache.jmeter.protocol.http.proxy.Proxy.writeToClient(Proxy.java:404)
at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:218)
我遵循的步骤是:
1. 将代理服务器设置为 8084。
2. 从 chrome 更改代理设置:将 https 代理设置为 8084。
3. 禁用所有 chrome 扩展和 chrome 帐户。
4. 启动 jmeter 代理服务器并点击https://url/login
5. 证书确认页面出现在浏览器上。同时,jmeter.log 显示:
2013/09/11 13:16:30 INFO - jmeter.protocol.http.proxy.Daemon: Creating Daemon Socket on port: 8084
2013/09/11 13:16:30 INFO - jmeter.protocol.http.proxy.Daemon: Proxy up and running!
2013/09/11 13:22:39 INFO - jmeter.protocol.http.proxy.Proxy: Proxy will remove the headers: If-Modified-Since,If-None-Match,Host
2013/09/11 13:22:39 INFO - jmeter.protocol.http.proxy.Proxy: Opened Keystore file: /home/abhijeet/Automation_Dev/LoadAutomation/Jmeter/apache-jmeter-2.9/bin/proxyserver.jks
2013/09/11 13:22:39 INFO - jmeter.protocol.http.proxy.Proxy: KeyStore for SSL loaded OK and put host in map (clients4.google.com)
2013/09/11 13:22:39 INFO - jmeter.protocol.http.proxy.Proxy: Opened Keystore file: /home/abhijeet/Automation_Dev/LoadAutomation/Jmeter/apache-jmeter-2.9/bin/proxyserver.jks
2013/09/11 13:22:39 INFO - jmeter.protocol.http.proxy.Proxy: KeyStore for SSL loaded OK and put host in map (translate.googleapis.com)
2013/09/11 13:22:40 INFO - jmeter.protocol.http.sampler.HTTPHCAbstractImpl: Local host = abhijeet-desktop
2013/09/11 13:22:40 INFO - jmeter.protocol.http.sampler.HTTPHC4Impl: HTTP request retry count = 1
2013/09/11 13:22:40 INFO - jmeter.protocol.http.sampler.HTTPHC4Impl: Setting up HTTPS TrustAll scheme
2013/09/11 13:22:40 INFO - jmeter.protocol.http.proxy.FormCharSetFinder: Using htmlparser version: 2.0 (Release Build Sep 17, 2006)<br>
6. 线程组开始显示对这些域的未知请求:
1. translate.googleapis.com 2. clients4.google.com 3. www.google.co.in 4. www.google.com 5. ssl.gstatic.com 6. safebrowsing.google.com 7. alt1-safebrowsing.google.com 8. clients4.google.com 9. www.gstatic.com . . n all other requests going to the target application.
(对于每个请求,都会引发上述异常)
我相信,上面的 google 域请求正在被记录,因为 chrome 正在动态搜索 google 上的关键字,而我正在地址栏中输入 url 字符串。但我不希望这些请求被记录在线程组中。
此外,我尝试了这些页面中的解决方案,但它们对我不起作用:
Link 1
Link 2
Link 3
我不明白,为什么 JMeter 不能使用它已经拥有的假证书。我检查了 chrome 中的 SSL 设置,但找不到任何 JMeter 证书。需要帮忙!!