JMeter https代理记录不起作用

时间:2013-09-11 09:34:01

标签: google-chrome ssl proxy jmeter load-testing

我正在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检查。

要排除的网址格式:
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正在谷歌上动态搜索关键字,而我正在地址栏中输入url字符串。但我不希望这些请求记录在线程组中。

另外,我尝试了这些页面的解决方案,但它们对我不起作用:
Link 1
Link 2
Link 3

我不明白,为什么JMeter无法使用它已有的假证书。我检查了chrome中的SSL设置,但找不到任何JMeter证书。需要帮助!!

4 个答案:

答案 0 :(得分:2)

我遇到同样的问题并解决它来信任证书。就像你看我的时候一样

Options > Advanced > Certificates > View Certificates ==> Authorities

并且看不到名称 ApacheJMeterRootCertificate.crt 或相关名称,但我发现有一个类似

的名称
  

_DO NOT INSTALL除非这是您的证书

我点击了这个对象&#39; Edit_Trust&#39;这个对象下的两个项目。我分享我的截图。我希望这可以帮助你和其他人。

我使用Firefox。在chrome中,应该有类似的方式来编辑证书。

enter image description here

答案 1 :(得分:1)

要在chrome / IE中执行此操作,我们必须将证书放入“受信任的根证书存储”

  • 双击创建的证书
  • 证书导入向导打开
  • 点击下一步
  • 选择第二个单选按钮(在以下商店中放置所有证书)
  • 单击“浏览”并选择“受信任的根证书颁发机构”&#39;。单击“下一步”
  • 点击完成

检查Chrome设置中安装的证书(在Http / SSL下) - 管理证书..(受信任的根证书颁发机构标签)

这可以解决屏幕截图显示的异常。

答案 2 :(得分:0)

jmeter 2.12对HTTPS有很好的支持。在WorkBench下,只需选择添加 - &gt;非测试元素 - &gt; HTTP(S)测试脚本记录器。这个版本第一次为我工作。

答案 3 :(得分:0)

最新版Google Chrome难以绕过安全设置,以避免网络钓鱼或中间人攻击等安全威胁。

我已成功配置Google Chrome(v.54.0)以允许JMeter自签名证书进行HTTP(S)录制。

这里的说明(在Windows上):

  1. 打开MMC控制台(SUPER + R,输入mmc,按Enter键)
  2. 选择文件添加/删除管理单元
  3. 选择当前用户的证书管理单元
  4. 选择受信任的根证书颁发机构&gt;&gt;证书
  5. 右键单击“证书”文件夹,然后选择“所有任务”&gt;&gt;导入...
  6. 使用向导保留默认选项,导入JMeter自签名证书。
  7. 安装完成后,右键单击JMeter自签名证书并选择“属性”
  8. 在“常规”选项卡上,确保选中“为所有目的启用”选项
  9. 在交叉证书上,包含您要记录的应用程序的网址(请确保输入完整的网址,例如https://www.live.com
  10. 关闭所有窗户。
  11. 完成。您现在应该可以绕过Chrome安全警报到达目的地并开始录制。