SSL certificate expiry explained
TLS certificates have a validity window. If the certificate a server presents is outside that window, clients can no longer treat it as currently valid even if everything else about the certificate is correct.
The dates that matter
A certificate has a start time and an expiry time, commonly represented as Not Before and Not After. A certificate should only be accepted while the current time falls inside that validity period and the rest of the validation checks also succeed.
Expiry is therefore only one part of certificate health. The hostname, trust chain and server configuration matter too.
Check the certificate the server is actually presenting
It is possible to renew a certificate successfully but leave an older certificate active on a load balancer, reverse proxy or another edge server. The useful check is therefore the live TLS connection, not just the certificate file sitting on disk.
For hosts that use Server Name Indication, the hostname supplied during the TLS handshake also matters because one IP can serve different certificates for different names.
Hostname coverage and SANs
Modern certificates list valid hostnames in the Subject Alternative Name extension. A certificate can be unexpired and trusted but still fail for a particular hostname if that name is not covered.
Wildcard names also have specific matching behaviour. For example, a wildcard for *.example.com does not automatically cover every deeper hostname level.
Check the live certificate
IPGetter opens a TLS connection and reports the live certificate's expiry, issuer, SANs, trust result, TLS version and cipher.
What to check before an expiry date
- Renew early enough. Leave time to handle validation or deployment problems.
- Deploy everywhere. Check each relevant edge, proxy or service endpoint.
- Verify hostname coverage. Make sure the renewed certificate contains the names clients use.
- Check the chain. The server should provide the certificate chain clients need to establish trust.
- Retest from outside. Confirm the public service is presenting the expected replacement.
Prefer the command line?
Check the certificate a live server is actually presenting.
> ssl example.com
Run in Terminal ->