1

我需要能够将 JMeter 指向具有过期 SSL 证书的测试服务器(我们需要一段时间才能更新它)。JMeter 在尝试连接时抛出异常是非常正确的:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:284)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1075)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1064)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:426)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255)
    at java.lang.Thread.run(Unknown Source)

有谁知道我可以将所述证书导入密钥库并在此过程中更改到期日期(这甚至会有所帮助还是服务器证书已过期的事实仍会导致引发此异常)?

我试图将有效性设置为导入的一部分,但这被忽略了:

keytool -import ... -validity 100

PS - 我知道我可以实现我自己的 TrustManager 忽略这些检查,但我的手指不允许我编写这种邪恶的代码,我更愿意得到一个无需修改 JMeter 就可以安装在服务器上的解决方案!

谢谢你的时间。

4

1 回答 1

3

JMeter 不验证证书,因此这不是您的问题的原因。

您使用哪种实现,java、HC3 或 HC4?

您的问题可能来自 Socket 版本协商中的错误。尝试在 user.properties 中设置:

  • https.socket.protocols=SSLv2Hello SSLv3 TLSv1

根据您的服务器配置,您可能必须使用它们,例如只设置这个:

  • https.socket.protocols=SSLv3
于 2013-04-23T15:44:46.173 回答