We got that to work simply by adding jsse.jar to our path file.  Either
in your java home/lib or in your jmeter path.  Also you might need to
make sure that you are set to the correct port, for a lot of https pages
it is port 443 and make sure you have the protocol set to https.  Give
that a try, that is all we had to do to get it to work.

Thanks,
Travis J. Cooper 

-----Original Message-----
From: Yefym Dmukh [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 12, 2006 7:23 AM
To: [email protected]
Subject: HTTP Request HTTPClient SSL protocol doesn`t work

Hi guys,
since 5 hours I`m trying to make a simple GET request against the remote
host via SSL protocol.
Certainly my jmeter.properties file is correct configured:
javax.net.ssl.trustStore=F:/java/jre1.5.0_02/lib/security/cacerts ,
password is also correct.
I`ve tried with imported pem certificate to the truststore, tried with
p12 and pem imported via SSLManager in JMETER console and always receive
the same exception :

<sampleResult timeStamp="1144846598835" dataType="text"
threadName="Thread Group 1-1" label="HTTP Request HTTPClient" time="16"
responseMessage="Non HTTP respon se message" responseCode="Non HTTP
response code" success="false"><property xml:space="preserve"
name="samplerData">GET https://heinzdcon.de.icw.int:443/index.h
tml
</property><binary>javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.Sun
CertPathBuilderException: unable to find valid certification path to
requested target&#13;
        at
com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java
:150)&#13;
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(
SSLSocketImpl.java:1476)&#13;
        at
com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java
:174)&#13;
        at
com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java
:168)&#13;
        at
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(
ClientHandshaker.java:847)&#13;
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(
ClientHandshaker.java:106)&#13;
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(
Handshaker.java:495)&#13;
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(
Handshaker.java:433)&#13;
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(
SSLSocketImpl.java:815)&#13;
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(
SSLSocketImpl.java:1025)&#13;
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(
SSLSocketImpl.java:619)&#13;
        at com.sun.net.ssl.internal.ssl.AppOutputStream.write(
AppOutputStream.java:59)&#13;
        at
org.apache.commons.httpclient.HttpConnection$WrappedOutputStream.write(
HttpConnection.java:1368)&#13;
        at java.io.BufferedOutputStream.flushBuffer(
BufferedOutputStream.java:65)&#13;
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java
:123)&#13;
        at
org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(
HttpConnection.java:799)&#13;
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(
HttpMethodBase.java:2277)&#13;
        at org.apache.commons.httpclient.HttpMethodBase.processRequest(
HttpMethodBase.java:2657)&#13;
        at org.apache.commons.httpclient.HttpMethodBase.execute(
HttpMethodBase.java:1093)&#13;
        at org.apache.jmeter.protocol.http.sampler.HTTPSampler2.sample(
HTTPSampler2.java:436)&#13;
        at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(
HTTPSamplerBase.java:514)&#13;
        at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(
HTTPSamplerBase.java:503)&#13;
        at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java
:247)&#13;
        at java.lang.Thread.run(Thread.java:595)&#13;
Caused by: sun.security.validator.ValidatorException: PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find vali d certification path to requested target&#13;
        at
sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java
:221)&#13;
        at sun.security.validator.PKIXValidator.engineValidate(
PKIXValidator.java:145)&#13;
        at sun.security.validator.Validator.validate(Validator.java
:203)&#13;
        at
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(
X509TrustManagerImpl.java:172)&#13;
        at
com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(
SSLContextImpl.java:320)&#13;
        at
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(
ClientHandshaker.java:840)&#13;
        ... 19 more&#13;
Caused by: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target&#13;
        at
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(
SunCertPathBuilder.java:236)&#13;
        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java
:194)&#13;
        at
sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java
:216)&#13;
        ... 24 more&#13;
</binary></sampleResult>
</testResults>



P.S.
Here is the working Test.java that tests the SSL connection. It has the
same parameters as jmeter.properties, provided via console:

import java.security.Security;
import java.net.*;

public class Test {
    private static String webserverurl =
            "https://heinzdcon/lifesensor/login/login.jsp";
            +
"?language=de&amp;logintype=de&amp;role=consumer&amp;country=de";

    public static void main(String args[]) throws Exception {

        Security.addProvider(new
com.sun.net.ssl.internal.ssl.Provider());
        System.setProperty(
                "java.protocol.handler.pkgs",
                "com.sun.net.ssl.internal.www.protocol");

        System.setProperty("javax.net.ssl.trustStore", args[0]);
        System.setProperty("javax.net.ssl.trustStorePassword", args[1]);

        System.out.println("-- truststore: " +
                System.getProperty("javax.net.ssl.trustStore"));

        System.setProperty("javax.net.ssl.keyStore", args[0]);
        System.setProperty("javax.net.ssl.keyStorePassword", args[1]);

        System.out.println("-- keystore: " +
                System.getProperty("javax.net.ssl.trustStore"));

        System.setProperty("javax.net.debug",
                "ssl,handshake,data,trustmanager");

        //  System.setProperty("keystore.type", "JCEKS");


      URL url = new URL(webserverurl);
      HttpURLConnection conn = (HttpURLConnection)url.openConnection();
      conn.getResponseCode();

      System.out.println("\n========== OK =================");
    }
}


Anybody has experience with SSL, according to the version (2.1.1) I have
no doubt that this core functionality works.

Regards,
Yefym.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to