Forum Discussion

fastbill's avatar
fastbill
Contributor
14 years ago

SSL Handshake errors

I'm testing a server that uses SSL but no certificate, running soapUI-pro v3.6 on Mac OS 10.6.6.

At first, I was not able to connect to this server at all. Each request returned
ERROR:javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake


I found (sorry, I don't recall where) a suggestion that adding "-Dsun.security.ssl.allowUnsafeRenegotiation=true" to the soapUI startup would bypass handshake errors.

I added this to the VMOptions entry in my soapUI info.plist file, and restarted soapUI. The request connected successfully, and I got a valid response. However, a subsequent request again returned the Handshake error.

Next, I removed this parameter from the info.plist VMOptions string, and instead inserted it into the JAVA_OPTS string in "soapui-pro.sh" in /Applications/eviware/soapUI-Pro-3.6/Contents/Resources/app/bin/. I restarted soapUI again.

Same result...the first request was successful, but later requests returned the same Handshake error.

Restarting soapUI before I submit each request has reduced my productivity to almost zero. How do I configure things so that I can submit any number of requests to this server and not need to restart soapUI after each request?

Thanks,
fastbill
  • Further information:

    We are accessing web services on a Microsoft IIS server of another organization, over which we have no control.

    To gain further insight into the SSLHandshakeException issue, I have now set these JAVA_OPTS in my soapui-pro.sh startup script:

    -Dsun.security.ssl.allowUnsafeRenegotiation=true -Dsoapui.https.protocol=SSLv3 -Djavax.net.debug=ssl:verbose

    If I wait 5-10 minutes after a successful request before I submit the next request, that new request will always return an SSLHandshakeException.

    In the debug=ssl:verbose output from the new request submitted after the 5-10 minute pause, I see this:

    %% Client cached [Session-1, SSL_RSA_WITH_3DES_EDE_CBC_SHA]
    %% Try resuming [Session-1, SSL_RSA_WITH_3DES_EDE_CBC_SHA] from port 52113
    *** ClientHello, SSLv3
    RandomCookie: GMT: 1299077875 bytes = { 215, 55, 186, 252, 54, 238, 119, 56, 213, 157, 124, 23, 17, 244, 187, 53, 6, 160, 22, 22, 217, 88, 183, 178, 125, 179, 250, 10 }
    Session ID: {220, 23, 0, 0, 203, 174, 79, 205, 21, 8, 138, 129, 125, 16, 64, 41, 50, 67, 98, 63, 88, 88, 88, 88, 75, 90, 110, 77, 238, 76, 1, 0}
    Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA,
    ...]
    Compression Methods: { 0 }
    Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}
    Extension ec_point_formats, formats: [uncompressed]
    ***
    LogList Updater for http log, WRITE: SSLv3 Handshake, length = 265
    LogList Updater for http log, received EOFException: error
    LogList Updater for http log, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    LogList Updater for http log, SEND SSLv3 ALERT: fatal, description = handshake_failure
    LogList Updater for http log, WRITE: SSLv3 Alert, length = 2
    LogList Updater for http log, called closeSocket()
    LogList Updater for http log, called close()
    LogList Updater for http log, called closeInternal(true)
    LogList Updater for http log, called close()
    LogList Updater for http log, called closeInternal(true)
    LogList Updater for http log, called close()
    LogList Updater for http log, called closeInternal(true)

    And the soapUI log contains this report of the SSLHandshakeException:

    2011-03-02 10:02:11,126 ERROR [WsdlSubmit] Exception in request: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    2011-03-02 10:02:11,126 ERROR [SoapUI] An error occured [Remote host closed connection during handshake], see error log for details
    2011-03-02 10:02:11,127 ERROR [errorlog] javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:817)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:632)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:104)
    at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
    at org.apache.commons.httpclient.WireLogOutputStream.write(WireLogOutputStream.java:86)
    at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90)
    at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
    at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.support.methods.ExtendedPostMethod.writeRequest(ExtendedPostMethod.java:107)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:194)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
    Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:333)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:798)
    ... 23 more
    2011-03-02 10:02:11,189 INFO [AbstractHttpRequestDesktopPanel] Error getting response for [PortalBookingWebServiceSoap.PurchaseMultiTrip:PurchaseMultiTrip]; javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    NOTE: While the SSLHandshakeException occurs every time I submit a new request after a pause of 5-10 minutes, it has also occurred when the time between one response and the next request is only 57ms (in a Test Case with Request1, Property Transfer from Request1 Response to Request2 Request, Request2).

    I have searched both within the eviware soapUI forum and elsewhere for "SSLHandshakeException," "SSL Handshake," "SSL Session Resume," "SSL Session Timeout," etc., and have yet to find a solution or workaround for this issue, which significantly impacts my ability to use soapUI for this project.

    I'd be grateful for any suggestions. Thanks!

    --FastBill