DEV Community

Cover image for The SSL Handshake Failed. Now What?
Theo Ezell (webMethodMan)
Theo Ezell (webMethodMan)

Posted on • Originally published at webmethodman.com

The SSL Handshake Failed. Now What?

We have all been there. You deploy a new integration, fire the test, and get the single most unhelpful error message in the history of computing:

Remote host closed connection during handshake.

That’s it. No reason. No error code. Just silence.

Junior engineers start randomly swapping certificates. Senior engineers start Googling cipher suites. Principal Architects turn on the lights.

The Java Virtual Machine (JVM) has a built-in "God Mode" for SSL/TLS networking: -Djavax.net.debug. It logs every single packet, byte, and decision made during the handshake. But where you enable it depends on which era of webMethods you are running.

The "Old World" (Integration Server Monolith)

If you are still running a classic on-premise IS (v10.15 or older) via the Tanuki Service Wrapper, you live in the custom_wrapper.conf file.

Location: .../profiles/IS/configuration/custom_wrapper.conf

The Fix:
wrapper.java.additional.999=-Djavax.net.debug=ssl,handshake
(Pro Tip: Ensure 999 is a unique index.)

The "New World" (Microservices Runtime / IWHI)

In the containerized world of IBM webMethods Hybrid Integration, there is no wrapper. The IS process is the PID 1 of the container. If you look for custom_wrapper.conf, you are looking for a ghost.

Instead, you must inject the flag directly into the JVM startup environment.

The Mechanism: The JAVA_CUSTOM_OPTS environment variable.

The Fix (Docker/Kubernetes):

env:
  - name: JAVA_CUSTOM_OPTS
    value: "-Djavax.net.debug=ssl,handshake"
Enter fullscreen mode Exit fullscreen mode

Reading the Matrix (What to Look For)

Once you trigger the error, your logs will explode with text. Don’t panic. You are looking for The Breakup:

1. The ClientHello (The Offer)

ClientHello, TLSv1.2
Cipher Suites: [TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, ...]
Enter fullscreen mode Exit fullscreen mode

The Director's Check: Does the client offer a protocol your server accepts? If they send TLSv1 and you require TLSv1.2, the conversation ends here.

2. The ServerHello (The Agreement)

ServerHello, TLSv1.2
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Enter fullscreen mode Exit fullscreen mode

The Director's Check: If you see a ClientHello but no ServerHello, your server looked at the menu and decided it couldn't eat anything. You have a Cipher Mismatch.

3. The Certificate Chain (The ID Card)

Certificate chain
chain [0] = [ Subject: CN=api.company.com ... ]
chain [1] = [ Issuer: CN=DigiCert Global Root CA ... ]
Enter fullscreen mode Exit fullscreen mode

The Director's Check: The most common "Cloud Migration" failure is a missing Intermediate CA. If the chain stops at the Leaf, the client will hang up.

The Lesson

The architecture changes (Monolith → Microservice), but the physics stay the same. You cannot architect a Zero Trust network if you don't understand the handshake that builds trust.

Stop guessing. Turn on the logs. See the matrix.

Top comments (0)