一尘不染

javax.net.ssl.SSLPeerUnverifiedException:使用JMeter进行负载测试时未对等身份验证

tomcat

因此,我安装了JMeter来测试启用SSL的站点(我从Geotrust获得了真正的证书,而不是自签证书),并且尝试从Tomcat直接测试SSL连接时遇到了问题。我得到:

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)

每当我尝试连接时。这是将JMeter 2.7与HttpClient4实现一起使用。这是对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,则没有问题。任何帮助,将不胜感激。


阅读 493

收藏
2020-06-16

共1个答案

一尘不染

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

看来您正在面对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来测试问题。

谢谢

2020-06-16