我正在JMeter上录制基于JSF的Web应用程序的https会话,但它无法正常工作 .
Target application is hosted on: AWS
JMeter version: 2.9 r1437961
Browser: Chrome版本29.0.1547.65
Java: java version "1.6.0_27"
OpenJDK运行时环境(IcedTea6 1.12.5)(6b27-1.12.5-0ubuntu0.12.04.1)
OpenJDK Server VM(build 20.0-b12,混合模式)
OS: Ubuntu 12.04
Proxy server config:
港口: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 proxy设置为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.线程组开始向这些域显示未知请求:
- translate.googleapis.com
- clients4.google.com
- www.google.co.in
- www.google.com
- ssl.gstatic.com
- safebrowsing.google.com
- alt1-safebrowsing.google.com
- clients4.google.com
- www.gstatic.com
.
.
n所有其他请求转到目标应用程序 .
(对于每个请求,抛出上述异常)
我相信,上面的谷歌域名请求正在记录,因为Chrome正在动态搜索谷歌上的关键字,而我正在地址栏中键入url字符串 . 但我不希望这些请求记录在线程组中 .
此外,我尝试了这些页面中的解决方案,但它们对我不起作用:
Link 1
Link 2
Link 3
我不明白,为什么JMeter无法使用它已有的假证书 . 我检查了chrome中的SSL设置,但找不到任何JMeter证书 . 需要帮忙!!
4 回答
要在chrome / IE中执行此操作,我们必须将证书放入“受信任的根证书存储区”
双击创建的证书
证书导入向导将打开
单击“下一步”
选择第二个单选按钮(将所有证书放在以下商店中)
单击“浏览”并选择'Trusted Root Certificates Authorities' . 点击下一步
单击“完成”
检查Chrome设置中安装的证书(在Http / SSL下) - 管理证书..(受信任的根证书颁发机构标签)
这应该可以解决屏幕截图显示的异常问题 .
我有同样的问题并解决它来信任证书 . 就像你看我的时候一样
并且看不到名称 ApacheJMeterRootCertificate.crt 或相关名称,但我意识到有一个类似的名字
我单击此对象,并在此对象下单击“Edit_Trust” . 我分享我的截图 . 我希望这可以帮助你和其他人 .
我用的是Firefox . 在chrome中,应该有类似的方式来编辑证书 .
jmeter 2.12对HTTPS有很好的支持 . 在WorkBench下,只需选择添加 - >非测试元素 - > HTTP(S)测试脚本 Logger . 这个版本第一次为我工作 .
最新版本的Google Chrome难以绕过安全设置,以避免安全威胁,如网络钓鱼或中间人攻击 .
我已成功配置Google Chrome(v.54.0)以允许JMeter自签名证书进行HTTP(S)录制 .
这里的说明(在Windows上):
打开MMC控制台(SUPER R,输入mmc,按Enter键)
选择文件添加/删除管理单元
为当前用户选择证书管理单元
选择“受信任的根证书颁发机构”>>“证书”
右键单击“证书”文件夹,然后选择“所有任务”>>“导入...”
使用向导导入JMeter自签名证书,保留默认选项 .
安装完成后,右键单击JMeter Self-Signed证书并选择“属性”
在“常规”选项卡上,确保选中“为所有目的启用”选项
在交叉证书上,包括您要记录的应用程序的URL(确保输入完整的URL,例如https://www.live.com)
关闭所有窗口 .
完成 . 您现在应该可以绕过Chrome安全警报到达目的地并开始录制 .