What actually happens during a TLS handshake, why certificate expiry breaks everything at once, and how to read the handshake yourself with openssl and a browser.
"The site is showing a certificate error" is one of the most common alarms a support engineer sees, and it's almost never actually about encryption strength — it's about trust, timing, or configuration. Understanding the handshake means you can tell, from the specific error message alone, roughly which of those three it is.
The five-step handshake sequence, why certificate expiry causes a hard failure rather than a warning, and the specific commands to inspect a certificate's actual state instead of guessing from a browser error message.
All of this happens before a single byte of the actual HTTP request is sent — which is why a broken certificate blocks the connection entirely rather than degrading gracefully.
A certificate has a fixed valid-from and valid-until date, checked in step 3 above. There's no partial-trust state — a certificate is either within its valid window or it isn't. The moment the clock crosses the expiry timestamp, every client independently and simultaneously starts rejecting the handshake, which is why certificate expiry incidents tend to look like "everything broke at once" rather than a gradual degradation. This is also why certificate renewal should never be a manual, easy-to-forget process for anything production-facing — automated renewal (like ACME/Let's Encrypt) exists specifically to remove the human "did anyone remember" step.
openssl s_client -connect iamravi.com:443 -servername iamravi.com
openssl s_client -connect iamravi.com:443 -servername iamravi.com < /dev/null | openssl x509 -noout -dates
The first command opens a live connection and dumps the full handshake detail, including the entire certificate chain. The second extracts just the validity dates (notBefore/notAfter) — the fastest way to confirm "is this actually an expiry problem" without wading through the full chain output. On Windows, a browser's padlock-icon certificate viewer shows the same dates without needing openssl installed.
If you're seeing a certificate error right now, check the dates first using the command above before assuming it's anything more complex. For the layer just before TLS in the request lifecycle, see How DNS Resolution Actually Works; for the layer just after, see HTTP Status Codes You'll Actually See in Production.
Part of: Freshers, Sitecore Engineers