What does the SSL checker test?
Reviewed by Prabath Thalangama · Last updated
The SSL/TLS checker connects to a site on port 443 the way a strict client would, verifies the certificate chain and host name, and reports the certificate's issuer, validity dates, days to expiry and names, plus the negotiated TLS version and cipher. It then grades the setup from A+ to F and explains every deduction.
The check uses full certificate verification, like curl or a Java or Python client. A certificate that browsers accept can still fail here, most often because the server does not send its intermediate certificate: browsers fetch the missing piece themselves, API clients and many mail servers do not.
The grade starts at 100 and loses points for an older negotiated protocol (TLS 1.2 costs 5, TLS 1.1 or older costs 40), a weak cipher (40) and an approaching expiry date (5 under 30 days, 20 under 14). A+ needs a perfect 100; an expired certificate or a failed handshake is an F. The methodology page has the full table.
How do I check a website's SSL certificate?
- Enter the host name, for example www.example.com. Check each name your certificate should cover separately.
- Read the grade, then any findings, then the certificate details.
- Fix the issues on the server or load balancer that terminates TLS, reload it, and check again.
How to read the results
- Grade
- A+ to F, from the protocol, cipher and expiry checks described above.
- Subject and SANs
- The names the certificate is valid for. The host you entered must match one of the subject alternative names.
- Issuer
- The certificate authority that signed it, for example Let's Encrypt or DigiCert.
- Valid from / until and days to expiry
- The validity window. Since March 2026 public certificates can be valid for at most 200 days, falling to 47 days by 2029 under CA/Browser Forum rules, so automate renewal.
- TLS version and cipher
- The best protocol and cipher suite the server negotiated with a modern client. TLS 1.3 is ideal.
- Handshake time
- How long the TCP and TLS handshake took from our server, in milliseconds.
Common SSL/TLS problems and how to fix them
Could not establish a TLS connection
The handshake failed verification or never completed. The usual causes are a missing intermediate certificate, a certificate that does not cover this host name, an expired certificate, or nothing listening with TLS on port 443.
Incomplete certificate chain
Configure the server with the full chain: your certificate followed by the intermediates (Let's Encrypt calls this fullchain.pem). Do not include the root.
# nginx
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;Certificate expiring soon or expired
Renew it and reload the web server. With Let's Encrypt, check that the certbot or acme.sh timer is running and that its reload hook actually reloads the server.
sudo certbot renew --dry-run
systemctl list-timers | grep -i certbotWeak protocol or cipher negotiated
Allow only TLS 1.2 and 1.3 and modern AEAD ciphers. Enabling TLS 1.3 is also what moves an A to an A+ here.
# nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;Examples and command-line equivalents
Inspect a certificate with OpenSSL
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltNameCheck the chain the server sends
Look for 'Verify return code: 0 (ok)' at the end, and at least two certificates in the chain.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/nullTest with curl's strict verification
curl -vI https://example.com 2>&1 | grep -E 'SSL connection|expire|subject|issuer'Frequently asked questions
Why does my site work in Chrome but fail with curl or this checker?
The server is almost certainly not sending its intermediate certificate. Chrome can fetch it via the certificate's AIA extension or a cache; curl, API clients and most programming languages cannot. Serve the full chain.
How do I get an A+?
Serve a valid certificate with a complete chain that has more than 30 days left, negotiate TLS 1.3, and use a strong cipher. TLS 1.3 support is the usual difference between A and A+.
Does this test every protocol the server supports?
No. It grades the protocol and cipher a modern client negotiates, which is what your visitors actually get. It does not enumerate every legacy protocol the server would also accept; use a tool such as testssl.sh for a full protocol and cipher scan.
How often should I check my certificate?
Automate renewal and monitoring rather than checking by hand. A free Domain Monitor here re-runs the checks on a schedule and records the score over time.
Further reading
- Let's Encrypt with Certbot, Including Renewal That Doesn't Break
- OCSP Stapling and Modern TLS Config
- The TLS 1.3 Handshake, Walked Through
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 5280: X.509 certificate and CRL profile
- Mozilla SSL Configuration Generator
- Run a full Super Scan to check DNS, email, website and TLS for a domain at once.