Introduction
A TLS handshake timeout means the client reached the server but could not complete the SSL negotiation before the connection stalled. This is usually slower and lower-level than a simple certificate error. The real issue can be overloaded servers, blocked ports, broken certificate loading, or a proxy expecting the origin to speak TLS differently than it actually does.
Symptoms
- Browsers or proxies fail to connect over HTTPS and eventually time out
- Health checks succeed on port 80 but fail or hang on 443
- The issue appears during traffic spikes, certificate renewals, or proxy changes
- Monitoring shows intermittent HTTPS availability rather than a total outage
- SSL scanners hang before they finish the handshake
Common Causes
- The origin process is listening on 443 but not responding fast enough to complete TLS negotiation
- CPU, memory, or connection pressure is starving the web server during handshake setup
- The certificate or private key failed to load correctly after renewal or config changes
- A firewall, load balancer, or upstream proxy interrupts long-running handshakes
- The client expects TLS on a port or endpoint that is configured for plain HTTP
Step-by-Step Fix
- Confirm whether the timeout happens for all clients or only through a specific proxy, CDN, or load balancer path.
- Test direct connectivity to the origin on port 443 so you can separate edge behavior from origin TLS behavior.
- Review web server logs and service status for certificate loading errors, worker starvation, or repeated listener restarts.
- Check system load during the incident to see whether CPU, memory, or connection saturation is slowing handshakes below acceptable limits.
- Verify the correct certificate, key, and intermediate chain are loaded by the active virtual host.
- Inspect firewalls, security groups, and proxy timeout settings that could interrupt the negotiation before completion.
- Confirm the upstream path expects HTTPS where the origin actually serves HTTPS and not a mismatched plain HTTP listener.
- Retest with an SSL diagnostic tool and representative client flows after making the change.
- Keep certificate deployment, listener validation, and load monitoring tied together so future renewals do not degrade TLS responsiveness silently.