JMeter AWS HTTPS SNI 问题
JMeter AWS HTTPS SNI issue
有什么方法可以让 JMeter 与 AWS HTTPS SNI 一起工作?
现在,当我尝试通过 HTTPS 访问我的资源并启用 CloudFront SNI 时,我收到以下异常:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:483)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1146)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1135)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:434)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:261)
at java.lang.Thread.run(Thread.java:745)
是的,CloudFront 支持 SNI [1]。您确定要发送 SNI header 并使用支持的密码 [2] 吗?要验证,您可以执行以下操作:
- 对您的 SSL 连接尝试进行 TCP 转储
- 查找 'Client Hello' 消息
- 确保您看到扩展名:server_name
确保服务器名称指示扩展设置了您的服务器名称。
这是使用 HTTPClient 4 时 JMeter 的一个已知问题:
因此您可以选择在 HTTP 请求上切换到 HttpClient3.1 实现。
2016 年 2 月 17 日编辑:
- 问题已在每晚构建中修复,如果您明天能得到它并就它是否适用于 HTTPClient 4 为您提供反馈就太好了
有什么方法可以让 JMeter 与 AWS HTTPS SNI 一起工作?
现在,当我尝试通过 HTTPS 访问我的资源并启用 CloudFront SNI 时,我收到以下异常:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:483)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1146)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1135)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:434)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:261)
at java.lang.Thread.run(Thread.java:745)
是的,CloudFront 支持 SNI [1]。您确定要发送 SNI header 并使用支持的密码 [2] 吗?要验证,您可以执行以下操作:
- 对您的 SSL 连接尝试进行 TCP 转储
- 查找 'Client Hello' 消息
- 确保您看到扩展名:server_name
确保服务器名称指示扩展设置了您的服务器名称。
这是使用 HTTPClient 4 时 JMeter 的一个已知问题:
因此您可以选择在 HTTP 请求上切换到 HttpClient3.1 实现。
2016 年 2 月 17 日编辑:
- 问题已在每晚构建中修复,如果您明天能得到它并就它是否适用于 HTTPClient 4 为您提供反馈就太好了