SSL/TLS certificate check
Certificate, chain, expiry, hostname match, key strength and the TLS version a server negotiates.
Working on it…
Running the checks. Results appear here in a moment.
What this tool checks
The SSL/TLS certificate check makes a real TLS handshake with a host name on the port you choose, sending the name as SNI so a shared server returns the right certificate.
It tests HTTPS (443 and 8443) and the implicit-TLS ports SMTPS (465), IMAPS (993), POP3S (995), LDAPS (636), DNS over TLS (853) and SIP-TLS (5061). STARTTLS ports such as 25 and 587 are not tested.
It:
- verifies the certificate against a public CA trust store and checks it is valid for the host name;
- shows every certificate the server sends (subject, Subject Alternative Names, issuer, validity, key and signature algorithm);
- counts the days until the server certificate expires;
- flags RSA keys shorter than 2048 bits and certificates signed with SHA-1;
- reports the TLS protocol version and cipher that were negotiated;
- compares the server certificate with the ones our earlier checks saw on the same host and port.
It does not check revocation (OCSP or CRL) or every TLS version and cipher the server accepts. It tests only the first public address the name resolves to, so another server behind the same name may differ. Names that resolve to private addresses are refused.
To see every certificate ever issued for a domain, use the Certificate Transparency search. To test whether a port is reachable at all, use the open port check.
Reading the results
The result shows the server (host, port and IP), protocol and cipher, then one card per certificate: Server certificate first, then the intermediates in the order sent.
The findings:
- Certificate is trusted and matches the host name - what you want.
- The certificate is not valid for this host - the name you tested is not in the certificate's Subject Alternative Names.
- The certificate is self-signed - no public CA vouches for it, so browsers show a warning.
- The certificate chain does not verify - usually a missing intermediate; the TLS library's error is shown.
- Expiry - a pass while more than 30 days remain, a warning from 30 days down to 14, and a failure under 14 days or once it has expired. An expired certificate gets the expiry finding instead of a trust failure.
- Weak RSA key and signed with SHA-1 - both are failures.
- Negotiated TLSv1.3 / TLSv1.2 with a cipher - a pass. Anything older is a failure.
The version shown is the best one both sides support. A pass does not prove that TLS 1.0 or 1.1 are switched off.
Certificate history for this host shows what our own checks (this tool, domain reports and monitors) have seen there. After a change it compares the current and previous certificates and points out a new issuing CA, a new key type or a reused key, a reissue within a week, and two certificates served at once. It starts with our first check of the host.
Common problems and fixes
Missing intermediate certificate
Desktop browsers often hide this by caching intermediates, but phones, API clients and mail servers fail. Serve the full chain. With nginx:
ssl_certificate /etc/ssl/example.com/fullchain.pem;
ssl_certificate_key /etc/ssl/example.com/privkey.pem;
Certbot and most ACME clients write fullchain.pem for this.
Certificate does not cover the name
A certificate for example.com does not cover www.example.com unless that name is in its SANs, and *.example.com covers only one level of subdomain. Reissue it with every name you serve.
Expiry warning that keeps coming back
Automated renewal usually runs about 30 days before expiry, so a warning means it has probably stopped. Check your ACME client's logs and timer, the HTTP or DNS challenge, and that the server was reloaded afterwards.
Self-signed certificate on a public service
Replace it with one from a public CA; Let's Encrypt is free and automated.
Unexpected change of issuing CA
If the history shows a CA you did not choose, find who requested it in the Certificate Transparency search and publish a CAA record:
example.com. CAA 0 issue "letsencrypt.org"
Old protocol or weak key
Enable TLS 1.2 and 1.3, disable 1.0 and 1.1, and use at least 2048-bit RSA or ECDSA P-256. For websites, also run the HTTP headers & security check, which covers HSTS.
FAQ
How do I check when an SSL certificate expires?
Enter the host name and run the check. The expiry finding says how many days are left, and the Valid until row on the server certificate card shows the exact date and time in UTC.
What is an incomplete certificate chain?
The server sends its own certificate but not the intermediate that links it to a trusted root. Browsers may hide this by caching intermediates; many other clients fail. Serving the full chain fixes it.
Can I check the certificate on a mail server?
Yes, on the implicit-TLS ports 465, 993 and 995. STARTTLS on ports 25 and 587 is not tested.
How can I see when a site's certificate changed?
Run the check: the certificate history panel shows the date our checks first saw the current certificate and what changed. A free SSL monitor can email you when it changes.
Does this check tell me if a certificate has been revoked?
No. It does not query OCSP responders or CRLs. A revoked but otherwise valid certificate will still pass here.