tomcat - javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated when load testing with JMeter

标签 tomcat ssl tomcat7 jmeter

所以我设置了 JMeter 来测试我的启用 SSL 的站点(我从 Geotrust 获得了一个真正的证书,而不是自签名证书)并且当我尝试直接从测试 SSL 连接时遇到了问题 Tomcat 。我得到:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:575)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:277)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1060)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1049)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:442)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
    at java.lang.Thread.run(Thread.java:680)

每当我尝试连接时。这是使用带有 HttpClient4 实现的 JMeter 2.7。这是对我在 Tomcat 7 上托管的一项服务的简单 GET 请求(任何感兴趣的人都可以使用 7.0.27)。

这是我的 SSL 连接器的 Tomcat 配置。请注意,我安装了 APR/native,它在 EC2 上的 Ubuntu 12.04 服务器上运行。

<Connector port="8443" maxHttpHeaderSize="8192"
           protocol="HTTP/1.1" 
           URIEncoding="UTF-8" 
           acceptorThreadCount="5"
           maxThreads="400" 
           scheme="https"
           secure="true"
           SSLEnabled="true"
           SSLCipherSuite="ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
           SSLHonorCipherOrder="true"
           SSLVerifyClient="optional"
           SSLCertificateFile="/etc/tomcat7/ssl/star.example.com.crt"
           SSLCertificateKeyFile="/etc/tomcat7/ssl/star.example.com.key"
           SSLCertificateChainFile="/etc/tomcat7/ssl/geotrust.crt" />

同样,这只是 JMeter 的问题。我可以使用任何浏览器毫无问题地访问该站点,如果我将 Apache 放在 Tomcat 前面并使用 mod_proxy 或 mod_jk,我没有问题。任何帮助将不胜感激。

最佳答案

在您发表最后一条评论后,我设法重现了证书与您的主机不匹配以及与您的主机匹配的问题。

您似乎遇到了 Java 6 中的错误。 事实上,我用 JDK6 重现了问题,但在使用 JMeter 2.7 的 JDK7 中没有重现。

为了记录这一点,我在这里打开了 bug:

在这里,Oleg 给了我关于 JDK7 的提示:

进一步分析您的配置,它可能来自您的自定义 tomcat7 配置:

SSLCipherSuite="ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
SSLHonorCipherOrder="true"

也许您可以尝试更改,但无论如何它都适用于 JDK7,因此您有自己的解决方案。

非常感谢您提出这个公开可用的 URL 来测试问题。

谢谢

关于tomcat - javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated when load testing with JMeter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538233/

相关文章:

java - Tomcat 8.5 : Required String parameter '...' is not present

java - 如何处理java.lang.Exception : Socket bind failed: [730013] exception

spring - 坟墓 : Error listenerStart

java - 如何编写可以支持 Tomcat 或 WebLogic 实现的 Java WebSocket Servlet

jquery - 在 IE7 中的服务器上呈现时出现奇怪的 JQuery 验证错误 ('this.0.form' 为空或不是对象)

ssl - HSTS 过期如何运作

Java "sun.security.validator.ValidatorException: PKIX path building failed"证书验证错误

wordpress nginx ssl 重定向循环

Java 反射不工作并获取 java.lang.NoSuchMethodException

tomcat - 安装具有评估拓扑的 IBM Rational CLM 解决方案后服务器不会启动