So here’s the deal - we have 2 HA proxy instances setup behind a google load balancer. The decryption endpoint is the HA proxy instances. Behind HA proxy there’s 6 web servers.
We have ONE client that is having issues accessing the system, they are getting an SSL handshake failure, and they are using java as a client (I’m verifying the version).
In our logs we see thousands of SSL handshake failures. We’re pretty strict, TLS 1.2 only, HSTS, but our cipher support is fairly broad.
They see this in their logs:
" %% Initialized: [Session-1, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
** TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
But it just hangs and they get a handshake error.
java.io.IOException: javax.net.ssl.SSLException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.readV3Record(InputRecord.java:581)
at sun.security.ssl.InputRecord.read(InputRecord.java:533)
I have no idea at this point what to do. Any help would be great.
You will have to share more of the configuration, the generic SSL config is not enough, I don’t even know if you use client certificate authentication or not.
Please do share at the very least the bind line, the more the better. Also please put everything in code format (select the text and hit the </> above.)
I’m confused about what you would like to show with this curl command. When I said capture the failing TLS traffic I meant use tcpdump and capture the tcp port 443 traffic from the IP address of your not working client and share the capture file.
This Java version perfectly supports both TLSv1.2 and TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. No reason for it to fail.
I suggest you try to reproduce this from elsewhere. If you can’t reproduce it, chances are something is interfering locally with the TLS traffic. A TLS intercepting firewall/security device may be also be something to look at at the customer premise.
We have tens of thousands of other clients not having issues, so I’m almost positive this is something to do with their network. The challenge is it didnt happen until we started using HAproxy so of course they are blaming it on us. Thus trying to figure out if it’s something we mis configured. But so far not a single other person has had any issues, including other clients that use Java. UGH. I’ll see if I can dig anything else out, but as always, thank you for your help!
Right, what was the configuration prior to haproxy then? If you are forcing TLSv1.2 now, and didn’t force TLSv1.2 previously, and a possible TLS interception does not support TLSv1.2, that would perfectly explain the failure.
Like I said, you need to capture the failing TLS handshake in front of haproxy. I’m sure you know the client IP, so capture it with tcpdump:
And share the file. Also share the actual domain name that the client connects to (or at least run it through ssltest - specifically looking out for any certificate or compatibility issues). You can send me those things via private message if you prefer.
Roger that. We were forcing TLS 1.2 previously, that’s not new, been like that for about 8 months. I’ll get the dump file. I can’t trigger the failure so let me see what I can do.