6

我正在 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 证书。需要帮忙!!

4

4 回答 4

2

我有同样的问题并解决它以信任证书。就像我看的时候一样

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

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

_请勿安装,除非这是您的证书

我单击此对象和此对象下的“Edit_Trust”两个项目。我分享我的截图。我希望这可以帮助你和其他人。

我使用火狐。在 chrome 上应该有类似的方法来编辑证书。

在此处输入图像描述

于 2013-12-03T10:13:48.710 回答
2

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

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

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

这应该可以解决您的屏幕截图所示抛出的异常。

于 2015-05-15T12:15:46.193 回答
0

jmeter 2.12 对 HTTPS 有很好的支持。在 WorkBench 下,只需选择 Add -> Non-Test Elements -> HTTP(S) Test Script Recorder。这个版本第一次对我有用。

于 2015-01-07T10:10:28.743 回答
0

最新版本的谷歌浏览器很难绕过安全设置,以避免网络钓鱼或中间人攻击等安全威胁。

我已成功配置 Google Chrome (v.54.0) 以允许用于 HTTP(S) 记录的 JMeter 自签名证书。

这里的说明(在 Windows 上):

  1. 打开 MMC 控制台(SUPER + R,键入 mmc,按 Enter)
  2. 选择文件添加/删除管理单元
  3. 为当前用户选择证书管理单元
  4. 选择受信任的根证书颁发机构 >> 证书
  5. 右键单击证书文件夹并选择所有任务>>导入...
  6. 使用保持默认选项的向导导入 JMeter 自签名证书。
  7. 安装后,右键单击 JMeter 自签名证书并选择属性
  8. 在常规选项卡上,确保选中启用所有目的选项
  9. 在 Cross-Certificates 上,包括您要记录的应用程序的 URL(确保输入完整的 url,例如https://www.live.com
  10. 关闭所有窗户。
  11. 完毕。您现在应该能够绕过 Chrome 安全警报到达目的地并开始录制。
于 2016-11-21T15:46:02.307 回答