2013-04-23 146 views
1

我需要能够将JMeter指向具有SSL证书过期的测试服务器(我们需要一段时间才能更新它)。将过期的SSL证书导入到Java密钥库中

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) 

有谁知道的任何方式,我可以导入说证书导入密钥库,并在此过程中更改过期日期(将由这甚至帮助或:当它试图连接JMeter是非常正确地抛出异常服务器证书是否过期这一事实仍然会导致此异常被抛出)?

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

keytool -import ... -validity 100 

PS - 我知道我可以实现我自己的TrustManager这忽略了这些检查,但我的手指赢得”允许我编写这样的恶意代码,而且我宁愿选择一种解决方案,而不必修改JMeter即可在服务器上安装该解决方案!

谢谢你的时间。

+0

您不能更改证书到期日进口,如​​THI s是“签名”内容的一部分 - 否则任何人都可以无限期延长证书的使用期限! – 2013-04-23 15:40:43

回答

2

JMeter不验证证书,所以这不是你的问题的原因。

你使用哪个实现,java,HC3或HC4?

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

  • https.socket.protocols = SSLv2Hello的SSLv3的TLSv1

你可以跟他们根据您的服务器配置玩,例如,仅设置此:

  • https.socket.protocols = SSLv3的
+0

感谢您的回复。它看起来像是在JRE(sun.security.ssl.SSLSessionImpl)级别上进行验证,所以我很确定这是对证书过期日期的安全检查(我们可以通过https将JMeter工作到其他服务器) 。 – StuPointerException 2013-04-23 15:55:39

+0

你使用哪种实现?显示你得到的完整堆栈跟踪。 – 2013-04-23 20:12:20

+0

JMeter 2.8 - 我已将完整的堆栈追踪添加到原始帖子。 – StuPointerException 2013-04-24 07:35:41