将过期的SSL证书导入Java密钥库

时间:2013-04-23 15:26:33

标签: java ssl jmeter

我需要能够在具有过期SSL证书的测试服务器上指向JMeter(我们能够续订它需要一段时间)。 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即可在服务器上安装!

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

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

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

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

  • https.socket.protocols = SSLv2Hello SSLv3 TLSv1

您可能必须使用它们,具体取决于您的服务器配置,例如,只需设置:

  • https.socket.protocols = SSLv3的