webMethods

webMethods

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

SSL Handshake

  • 1.  SSL Handshake

    Posted Wed May 26, 2010 09:13 AM

    Hi

    I’m trying to configure the Integration Server as an SSL client.

    Initially I wrote an SSL client in Eclipse to test the SSL connection and all this works correctly - I was able to view the SSL handshake debug etc.

    I have a DER certificate (that I used in my SSL client) and I placed this in a IntegrationServer/certs/trusted directory.

    I tried to use the pub.client.http service to call the https URL however I get:

    ssl_debug(1): Starting handshake (iSaSiLk 3.03)…
    ssl_debug(1): Sending v2 client_hello message, requesting version 3.1…
    ssl_debug(1): IOException while handshaking: Connection closed by remote host.
    ssl_debug(1): Shutting down SSL layer…

    So I attempted to create a java service by importing the code from my SSL client.
    I debug the SSL handshake:

    trustStore is: /da003WebM001/IntegrationServer/packages/AppComada/resources/cm_keystore
    trustStore type is : jks
    trustStore provider is :
    init truststore
    adding as trusted cert:

    /* CERT VALUES */

    trigger seeding of SecureRandom
    done seeding SecureRandom
    trustStore is: /da003WebM001/IntegrationServer/packages/AppComada/resources/cm_keystore
    trustStore type is : jks
    trustStore provider is :
    init truststore
    “ssl.log” 495 lines, 32976 characters
    0040: 09 00 15 00 12 00 03 00 08 00 14 00 11 01 00 …
    HTTP Handler 10.134.42.238, WRITE: TLSv1 Handshake, length = 79
    [write] MD5 and SHA1 hashes: len = 107
    0000: 01 03 01 00 42 00 00 00 20 00 00 04 01 00 80 00 …B… …
    0010: 00 05 00 00 2F 00 00 35 00 00 33 00 00 39 00 00 …/…5…3…9…
    0020: 32 00 00 38 00 00 0A 07 00 C0 00 00 16 00 00 13 2…8…
    0030: 00 00 09 06 00 40 00 00 15 00 00 12 00 00 03 02 …@…
    0040: 00 80 00 00 08 00 00 14 00 00 11 4B FC D0 66 4C …K…fL
    0050: 45 12 2F 0C 02 FB 3F A2 DD C8 6C D7 42 DD 16 CF E./…?..l.B…
    0060: 91 FE 80 DE 8E 99 FD CA 6E D7 71 …n.q
    HTTP Handler 10.134.42.238, WRITE: SSLv2 client hello message, length = 107
    [Raw write]: length = 109
    0000: 80 6B 01 03 01 00 42 00 00 00 20 00 00 04 01 00 .k…B… …
    0010: 80 00 00 05 00 00 2F 00 00 35 00 00 33 00 00 39 …/…5…3…9
    0020: 00 00 32 00 00 38 00 00 0A 07 00 C0 00 00 16 00 …2…8…
    0030: 00 13 00 00 09 06 00 40 00 00 15 00 00 12 00 00 …@…
    0040: 03 02 00 80 00 00 08 00 00 14 00 00 11 4B FC D0 …K…
    0050: 66 4C 45 12 2F 0C 02 FB 3F A2 DD C8 6C D7 42 DD fLE./…?..l.B.
    0060: 16 CF 91 FE 80 DE 8E 99 FD CA 6E D7 71 …n.q
    HTTP Handler 10.134.42.238, received EOFException: error
    HTTP Handler 10.134.42.238, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection du
    ring handshake
    HTTP Handler 10.134.42.238, SEND TLSv1 ALERT: fatal, description = handshake_failure
    HTTP Handler 10.134.42.238, WRITE: TLSv1 Alert, length = 2
    [Raw write]: length = 7
    0000: 15 03 01 00 02 02 28 …(
    HTTP Handler 10.134.42.238, called closeSocket()

    I was wondering if anybody could point me in the right direction.

    I need to also create a web service connector from a WSDL the schema locations pointing to https urls (similar URL I need to send data too).

    regards

    Paul


    #Integration-Server-and-ESB
    #webMethods
    #webmethods-Protocol-and-Transport


  • 2.  RE: SSL Handshake

    Posted Wed May 26, 2010 11:30 PM

    Now the error you get is:

    ssl_debug(1): IOException while handshaking: Connection closed by remote host.

    Question: Why remote host closes the connection? debug SSL on the other side as well.

    The problem here seems to be the remote host closes connection right after the client sends a “hello”, with this info you need to debug the remote host.


    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport
    #webMethods


  • 3.  RE: SSL Handshake

    Posted Thu October 08, 2015 05:18 AM

    Hello,

    Was this issue resolved? We are facing similar type of issue.

    Below is the wrapper log extract:

    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, received EOFException: error
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, SEND TLSv1 ALERT: fatal, description = handshake_failure
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, WRITE: TLSv1 Alert, length = 2
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, called closeSocket()
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, called close()
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, called closeInternal(true)
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, called close()
    INFO | jvm 1 | 2015/10/08 08:54:00 | HTTP Handler 150.251.106.76, called closeInternal(true)
    INFO | jvm 1 | 2015/10/08 08:54:00 | Allow unsafe renegotiation: false
    INFO | jvm 1 | 2015/10/08 08:54:00 | Allow legacy hello messages: true
    INFO | jvm 1 | 2015/10/08 08:54:00 | Is initial handshake: true
    INFO | jvm 1 | 2015/10/08 08:54:00 | Is secure renegotiation: false
    INFO | jvm 1 | 2015/10/08 08:54:05 | HTTPSListener@443, setSoTimeout(20000) called

    Appreciate you response.

    Thanks & Regards,
    Nikhil


    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport
    #webMethods


  • 4.  RE: SSL Handshake

    Posted Wed October 21, 2015 02:30 PM

    Hi Nikhil,

    please provide your wM Version together with the Fix-Level for the affected component (IS, MWS, …).

    Did you follow the instructions in the empower kb article related to POODLE configuration?

    Dependend on wM Version and remote server there are several option to take in account.

    Regards,
    Holger


    #webMethods
    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport


  • 5.  RE: SSL Handshake

    Posted Thu October 22, 2015 02:52 PM

    Based on this lines in your log:

    ssl_debug(1): Starting handshake (iSaSiLk 3.03)…
    ssl_debug(1): Sending v2 client_hello message, requesting version 3.1…
    ssl_debug(1): IOException while handshaking: Connection closed by remote host.
    ssl_debug(1): Shutting down SSL layer…

    your system is sending a v2 client_hello, the destination server rejected right away. Some system will not take v2 client_hello at all, so the SSL handshake won’t continue.

    try to use this extended setting:
    watt.net.ssl.client.handshake.minVersion=sslv3
    restarting IS.
    It will start the handshake with v3 client_hello.


    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport
    #webMethods


  • 6.  RE: SSL Handshake

    Posted Tue October 27, 2015 12:57 PM

    Just for more info:

    With 9.x.x and above assuming JSSE=true on the HTTPS port you can set this for Inbound connections on the gateway server:

    watt.net.jsse.server.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2,SSLv2Hello

    HTH,
    RMG


    #webmethods-Protocol-and-Transport
    #webMethods
    #Integration-Server-and-ESB


  • 7.  RE: SSL Handshake

    Posted Wed October 28, 2015 07:13 AM

    we are using wm9.6 without any fixes or patches applied. in my IS admin guide, i don’t see any mention of below server configuration parameter.

    watt.net.jsse.server.enabledProtocols

    where do we get the list of server configuration details which can be customized but not mentioned in IS admin guide documentation?

    thanks and regards,
    ajay kumar kasam


    #webMethods
    #webmethods-Protocol-and-Transport
    #Integration-Server-and-ESB


  • 8.  RE: SSL Handshake

    Posted Wed October 28, 2015 08:15 AM

    Hi Ajay,

    please apply latest IS_Core_Fix, SCG_Entrust_Fix and SCG_Security_Fix.

    This feature has been introduced while fixing the Poodle-Issue.

    Regards,
    Holger


    #Integration-Server-and-ESB
    #webMethods
    #webmethods-Protocol-and-Transport


  • 9.  RE: SSL Handshake

    Posted Tue April 05, 2016 09:34 AM

    Hello rmg,

    We are again facing this issue after long time now.

    Also the below property is already set as you suggested:

    watt.net.jsse.server.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2,SSLv2Hello

    Regards,
    Nikhil Bhosle


    #Integration-Server-and-ESB
    #webMethods
    #webmethods-Protocol-and-Transport


  • 10.  RE: SSL Handshake

    Posted Tue April 05, 2016 09:58 AM

    Hi Nikhil,

    The best way to solve ssl problems is to find out with step of the ssl handshake go’s wrong.
    You can do this by using wireshark on your server. There you can follow all steps. You can even decrypt if you have the correct certificates.

    maybe this site can help with the wireshark part:

    kind regards
    Jo


    #Integration-Server-and-ESB
    #webMethods
    #webmethods-Protocol-and-Transport


  • 11.  RE: SSL Handshake

    Posted Fri April 08, 2016 03:14 PM

    Since you are using JSSE, remove SSLv2Hello from your setting:
    watt.net.jsse.server.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2,SSLv2Hello

    Your client’s system doesn’t support SSLv2Hello.


    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport
    #webMethods


  • 12.  RE: SSL Handshake

    Posted Fri April 08, 2016 03:23 PM

    Why should this be removed even though JSSE true?

    Since you are using JSSE, remove SSLv2Hello from your setting:
    watt.net.jsse.server.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2,SSLv2Hello

    TIA,
    RMG


    #webmethods-Protocol-and-Transport
    #Integration-Server-and-ESB
    #webMethods


  • 13.  RE: SSL Handshake

    Posted Fri April 08, 2016 03:46 PM

    SSLv2Hello is regarded as less secure, there is no reason it should be used anymore.
    SSLV3Hello should be used.
    Some systems explicitly disable SSLv2Hello support. I believe that’s the case for Nikhile.


    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport
    #webMethods


  • 14.  RE: SSL Handshake

    Posted Mon April 11, 2016 08:13 AM

    Hi,

    as SSLv2 (SSLV2Hello) and SSLv3 (SSLv3) are both considered unsecure meanwhile they should no longer by allowed for either Type (JSSE/) or direction (server/client) as longer as this is really required by one of your partners.

    Refer to the following iTracs:

    
    PIE-34321
    Enhancement to Integration Server to allow configuration of cipher
    suites with JSSE connections.
    
    Integration Server now contains server configuration properties
    that you can use to specify the cipher suites used with inbound
    and outbound JSSE communications.
    
    Inbound JSSE Communications
    To control the cipher suites used on Integration Server ports that
    use JSSE and handle inbound requests, specify comma-separated
    values for watt.net.jsse.server.enabledCipherSuiteList. To include
    all the cipher suites supported by the JVM, specify a value of
    default. For example:
    watt.net.jsse.server.enabledCipherSuiteList=
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256
    _CBC_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256
    watt.net.jsse.server.enabledCipherSuiteList=default
    
    The default value is default.
    
    For changes to this property to take effect, you must start the
    port. If the port is already started, you can restart it by
    disabling the port and then enabling it.
    
    Outbound JSSE Communications
    To use JSSE for all of the outbound HTTPS connections from
    Integration Server, specify a value of true for the
    watt.net.ssl.client.useJSSE server configuration property. The
    default value of this property is false, indicating that JSSE is
    not used for outbound HTTPS connections.
    
    Note: When executing the pub.client:http service, the value of the
    useJSSE input parameter override the value of the
    watt.net.ssl.client.useJSSE server configuration property.
    
    To control the cipher suites used on JSSE sockets that are used
    while making outbound HTTPS requests, specify comma-separated
    values for the server configuration property
    watt.net.jsse.client.enabledCipherSuiteList. To include all the
    cipher suites supported by the JVM, specify a value of default.
    For example:
    
    watt.net.jsse.client.enabledCipherSuiteList=
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256
    _CBC_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256
    watt.net.jsse.client.enabledCipherSuiteList=default
    
    The default values is default.
    
    Note: Any changes you make to
    watt.net.jsse.client.enabledCipherSuiteList affect new connections
    only.
    
    Note:  When the logging facility 0006 Server SSL Interface is set
    to the Debug logging level, Integration Server writes messages
    about protocols used for inbound and outbound ports to the server
    log. At the Trace logging level, Integration Server writes
    messages about the enabled cipher suites.
    
    In addition to the above changes for controlling cipher suites, to
    provide backward compatibility, Integration Server now includes
    SSLv2Hello as a default value for the server configuration
    property watt.net.jsse.server.enabledProtocols. In PIE-34054, the
    default value of watt.net.jsse.server.enabledProtocls was set to
    "TLSv1,TLSv1.1,TLSv1.2". Now, the default value of
    watt.net.jsse.server.enabledProtocls is
    "SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2".

    as well as

    
    PIE-34054
    Remove use of SSLv3 from any HTTPS or FTPS Integration Server
    ports.
    
    In order to protect against POODLE vulnerability (CVE-2014-3566)
    , this fix exposes server configuration parameters that allow
    you to disable the use of SSLv3.0 on Integration Server HTTPS
    and FTPS ports.
    
    Depending on whether connections use the Entrust library
    (entoolkit.jar) or JSSE (where useJSSE=true), you use a
    different procedure to disable SSLv3.0. Follow the appropriate
    procedure as follows:
    
    For connections that use Entrust (entoolkit.jar) library:
    --------------------------------------------------------- When
    Integration Server uses the Entrust library to handle inbound
    and outbound requests, you disable SSLv3.0 by setting the
    following server configuration parameters:
    
    - watt.net.ssl.server.handshake.minVersion
    
    - watt.net.ssl.server.handshake.maxVersion
    
    Possible values for these server configuration parameters are
    "sslv3" and "tls" (the default). With this fix, these two
    parameters take the default value "tls", which indicates that
    all server side SSL listeners will support only TLSv1 and no
    longer accept SSLv3 connections.
    
    When Integration Server acts as a client and makes an outbound
    request, it configures the allowed protocols using the
    following server configuration parameters:
    
    - watt.net.ssl.client.handshake.minVersion=sslv2
    
    - watt.net.ssl.client.handshake.maxVersion=tls
    
    Possible values for these server configuration parameters are
    "sslv2", "sslv3", and "tls". If you want to disable the use of
    "sslv3", set watt.net.ssl.client.handshake.minVersion as
    follows: watt.net.ssl.client.handshake.minVersion=tls
    
    To change the values of the server configuration parameters,
    from Integration Server Administrator, navigate to Settings >
    Extended and add the parameters as follows:
    
    - watt.net.ssl.server.handshake.minVersion=tls
    
    - watt.net.ssl.server.handshake.maxVersion=tls
    
    - watt.net.ssl.client.handshake.minVersion=tls
    
    - watt.net.ssl.client.handshake.maxVersion=tls
    
    If any of your clients require SSLv3 to connect (the previous
    default), set watt.net.ssl.server.handshake.minVersion as
    follows: watt.net.ssl.server.handshake.minVersion=sslv3
    
    When making outbound connections, you can configure Integration
    Server to first try to connect using sslv3 and, if that fails,
    to use tlsv1, set watt.net.ssl.client.handshake.minVersion as
    follows: watt.net.ssl.client.handshake.minVersion=sslv3
    
    This will allow Integration Server to use sslv3 with endpoints
    that do not support tlsv1.
    
    For connections that use JSSE (where useJSSE=true):
    
    ---------------------------------------------------
    
    When Integration Server uses JSSE to handle inbound and
    outbound requests, you disable SSLv3.0 by setting the following
    server configuration parameters:
    
    - watt.net.jsse.server.enabledProtocols
    - watt.net.jsse.client.enabledProtocols
    
    Possible values for these server configuration parameters are a
    comma-separated values consisting of one or more of the
    following:
    
    - SSLv2Hello
    - SSLv3
    - TLSv1
    - TLSv1.1
    - TLSv1.2
    
    With this fix, watt.net.jsse.server.enabledProtocols and
    watt.net.jsse.client.enabledProtocols are set to the default
    value of "TLSv1,TLSv1.1,TLSv1.2", which indicates that all
    server side SSL listeners and client side outbound connections
    that use JSSE will not accept any SSLv3 or SSLv2 connections.
    
    To change the values of the parameters, from Integration Server
    Administrator, navigate to Settings > Extended and add the
    parameters as follows:
    
    watt.net.jsse.server.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2
    watt.net.jsse.client.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2
    
    Note: These values are case-sensitive. Specify the values
    exactly as shown.
    
    If any of your clients need to connect using SSLv3, add SSLv3
    to watt.net.jsse.server.enabledProtocols, for example:
    watt.net.jsse.server.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2,SSLv3
    
    When starting JSSE ports, at DEBUG level of logging
    facility 6 (Server SSL Interface), Integration Server
    logs a message to indicate what protocols are enabled
    for each JSSE port.

    for further informations.

    Regards,
    Holger


    #webMethods
    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport


  • 15.  RE: SSL Handshake

    Posted Wed April 27, 2016 07:55 AM

    Hello All,

    The issue was resolved for me after applying fix IS Core fix 8.

    PIE-38429
    Integration Server logs an exception when a service is invoked
    through a JSSE-enabled HTTPS port with client authentication set
    to “Username/Password” or “Request Client Certificates”.

    When a service is invoked through an HTTPS port that uses JSSE
    and has client authentication set to “Username/Password” or
    “Request Client Certificates”, Integration Server logs the
    following exception in the error log:
    javax.net.ssl.SSLPeerUnverifiedException: peer not
    authenticated.

    The issue is now resolved. Integration Server does not log any
    exception upon invoking a service successfully through a
    JSSE-enabled HTTPS port with client authentication set to
    “Username/Password” or “Request Client Certificates”.


    #Integration-Server-and-ESB
    #webmethods-Protocol-and-Transport
    #webMethods