The three checks
“SSL certificate” is the everyday name; the protocol has been TLS for many years, and the two words are used interchangeably here. Whatever it is called, a client decides whether to trust a server by asking three questions, and this tool asks the same three.
| Check | Passes when | Typical failure |
|---|---|---|
| Trusted chain | The certificate links, through any intermediates, to a root authority the client already trusts | Self-signed certificate, private CA, or a missing intermediate |
| Host name | The name you connected to is listed in the certificate's subject alternative names | Certificate issued for www.example.com used on api.example.com |
| Validity dates | Today falls between “not before” and “not after” | Renewal did not happen, or a renewed certificate was never deployed |
All three must pass. A failure in any one stops a well-behaved client before it sends a request, so there is no HTTP status code to read, only a connection error. The HTTP vs HTTPS guide explains what each check protects against.
The missing intermediate: works in a browser, fails in code
Certificate authorities do not sign your certificate with their root. They sign it with an intermediate certificate, which the root signed in turn. A client only holds the roots, so the server has to send the intermediate along with its own certificate; without it, the client has a certificate signed by something it has never seen.
Browsers hide the mistake. They cache intermediates from other sites and can download a missing one using a URL inside the certificate, so the padlock appears and everything looks healthy. Command-line tools, programming language runtimes and other servers do none of that. The result is the classic report: the site works for every person who opens it, and every API client, webhook sender and monitoring probe gets unable to verify the first certificate or unable to get local issuer certificate.
This checker connects the way code does, without a cache and without fetching anything extra. If the
chain check fails with a note that the intermediate was not sent, the fix is on the server: install
the full chain file your authority provided, which most name fullchain.pem, in place of
the certificate on its own.
Reading the rest of the report
Names on the certificate
The list of subject alternative names is the complete set of host names the certificate is good for. A
wildcard such as *.example.com covers exactly one level: api.example.com, but
neither example.com itself nor v2.api.example.com. The older “common name”
field is no longer consulted by modern clients, so a name must be in this list to count.
Expiry
Public certificates are short-lived by design and getting shorter, which makes automatic renewal the only workable arrangement. When a certificate is inside its last two weeks and has not been replaced, the automation has usually stopped: a cron job removed, a DNS record the challenge depends on changed, or a renewed certificate sitting on disk because the web server was never reloaded. This tool flags anything with 15 days or fewer remaining.
Protocol, cipher and ALPN
These describe the single connection that was made: the TLS version and cipher suite the server chose
from what was offered, and the application protocol agreed through ALPN, where h2 means
the server speaks HTTP/2. They show what the server prefers, not everything it supports. A server that
negotiates TLS 1.3 here may still accept older versions from older clients, and this check does not
probe for those.
The chain
Each certificate is listed with its subject, issuer, validity, key and SHA-256 fingerprint. The fingerprint identifies one exact certificate, which makes it the thing to compare when you need to know whether two servers, or a server before and after a deployment, are presenting the same one.
What this check does not cover
- It is one vantage point. The connection is made from this site's server. A host behind a CDN or a geographic load balancer can present a different certificate elsewhere, and a server on a private network cannot be reached at all.
- Trust is judged against one root list. The chain is verified against the certificate authorities bundled with the Node.js runtime on our server, which follows Mozilla's list. A very old device, or a corporate machine with extra roots installed, may decide differently.
- Revocation is not checked. A certificate that has been revoked but is otherwise valid is reported as valid.
- Only implicit TLS, on a fixed list of ports. Services that begin in plain text and upgrade with STARTTLS, such as SMTP on port 587, cannot be checked, and arbitrary ports are not accepted.
- It is not a configuration audit. Weak cipher support, protocol downgrade and header policy are outside its scope.
To repeat the check from your own machine, curl -v https://example.com/ prints the
handshake and certificate details; the curl verbose example explains the
output, and the curl SSL example covers the certificate options.
Certificate errors and what they mean
| Error a client reports | Cause | Fix |
|---|---|---|
| certificate has expired | Past its “not after” date | Renew, deploy, and reload the server |
| unable to verify the first certificate | Intermediate not sent | Serve the full chain |
| self-signed certificate | No authority vouches for it | Use a certificate from a public authority, or add your CA to the client's trust store |
| hostname mismatch, or no alternative certificate subject name matches | The name is not on the certificate | Reissue with the name included, or call the name it was issued for |
| certificate is not yet valid | The client's clock is wrong, or the certificate was installed early | Correct the clock |
When the cause is on your side as the caller, resist the shortcut of switching verification off. It turns an error into silence and removes the protection along with it; the curl ignore-certificate page sets out the safer options. If the host name will not resolve in the first place, start with the DNS lookup.
Frequently asked questions
How do I check if an SSL certificate is valid?
Enter the host name above and press Check. The tool connects to the server and reports whether the certificate chain is trusted, whether the certificate covers that host name, and whether today is within its validity dates. All three must pass.
How do I check when an SSL certificate expires?
Run a check on the host. The result shows the expiry date and the number of days remaining, and flags any certificate with 15 days or fewer left.
Why does my site work in a browser but fail in curl or in code?
Most often because the server is not sending its intermediate certificate. Browsers can fill that gap from their cache or by downloading the intermediate, while command-line tools and programming languages cannot. Install the full chain on the server.
What is the difference between SSL and TLS?
TLS is the successor to SSL and is what every current server and client uses. SSL itself is obsolete and insecure. The word SSL survives as the common name for the certificates and for the padlock, so an SSL certificate today is a certificate used with TLS.
What is a certificate chain?
The sequence that links a server certificate to a trusted root: the server certificate is signed by an intermediate, and the intermediate by a root the client already holds. The server must send its own certificate and the intermediates for the chain to be verifiable.
Does a wildcard certificate cover the root domain?
No. A certificate for *.example.com covers one level of subdomain, such as api.example.com, but not example.com itself and not deeper names such as v2.api.example.com. The root must be listed separately.
Is the host name I check sent to your server?
Yes. A web page cannot inspect another server's certificate, so the name is sent to api-tester.com, which makes one TLS connection to that host and returns what it saw. The names you check are not logged or stored.
Related tools and reference
DNS Lookup
Check that the host name resolves, and to which address.
HTTP vs HTTPS
What TLS adds, what it hides, and how certificates fail.
API Tester
Send an HTTPS request to the host and read the response.
Curl SSL Example
Certificate and TLS options on the command line.
526 Invalid SSL Certificate
What Cloudflare returns when the origin certificate fails these checks.
Hash Generator
SHA-256, the function behind a certificate fingerprint.