SSL/TLS Server Test
Test how well a server sets up its encrypted connections, and see every finding behind the grade it gets.
Overview
The SSL/TLS Server Test connects to a server the way a browser or mail client would. It reports which protocol versions and cipher suites the server accepts, whether its certificate is valid and trusted, how the handshake is set up, and which known weaknesses follow from all that. One grade from A+ to F sums it up.
It works for websites, for other services that speak TLS from the first byte (mail submission and retrieval, LDAP and DNS over TLS), and for the mail ports that switch to TLS with STARTTLS.
Only test servers you run or are allowed to test. Most of the test is ordinary handshakes, a few dozen of them in a short time. The checks for known bugs, however, send deliberately malformed messages: a heartbeat that asks for more than it carries, a ChangeCipherSpec out of turn, and records whose padding or MAC is wrong. A sound server answers them with an error and nothing else, but an intrusion detection system may well report them.
Web interface
Enter a host name, such as example.com, and choose a port. A URL such as
https://example.com/page works too; only the host name is used. IP addresses cannot be tested,
because a certificate names hosts, not addresses.
| Port | Service |
|---|---|
| 443 | HTTPS, the default |
| 465 | Mail submission over TLS (SMTPS) |
| 636 | LDAP over TLS (LDAPS) |
| 853 | DNS over TLS |
| 993 | IMAP over TLS (IMAPS) |
| 995 | POP3 over TLS (POP3S) |
| 8443 | HTTPS on the common alternative port |
| 587, 25 | SMTP with STARTTLS |
| 143 | IMAP with STARTTLS |
| 110 | POP3 with STARTTLS |
On the STARTTLS ports the test first runs the short plaintext exchange the protocol asks for (the greeting, EHLO or its equivalent, and the STARTTLS command) and then tests the TLS that follows, exactly as on a direct TLS port.
Click Start Test. The steps show as they run, and the certificate, protocols and cipher suites appear as soon as they are known. Most tests take a few seconds; a server far away with many cipher suites can take up to a minute. Stop ends a running test. The dice fills in an example.
Longer parts of the result, such as the cipher suites of each protocol version or the certificate chain, start closed with a short summary in their heading; a click opens them. A part that holds something to fix, such as an insecure suite or a certificate that has to be fetched, opens by itself.
A host and port tested within the last hour show the kept result straight away, with the time of the test.
A host name with several addresses can point to several servers. The first address is tested; the Addresses panel lists all of them, with the grade of those already tested and a button to test or show each one.
| Message | When |
|---|---|
Enter a host name, such as example.com. IP addresses cannot be tested. | the input is an address, or not a host name |
This host name has no address. | the name does not exist, or has no IPv4 address |
This host has IPv6 addresses only. The test reaches servers over IPv4 for now. | the name has AAAA records but no A record |
This host name points to 10.0.0.1, which is not a public address. | one of its addresses is private or reserved |
142.250.154.102 is not an address of google.com right now. Test the host name alone to see its current addresses. | the address in the link does not belong to the name, or no longer does |
This is not a public IPv4 address. | the address in the link is private, reserved or not an IPv4 address |
Nothing answers on port 993 of this host. | the port is closed or filtered |
The server on port 993 did not answer a TLS handshake with any protocol version. | something answers, but not with TLS; a STARTTLS port, for example |
This host is being tested right now. Its result will be ready within a minute or two. | another test of the same host and port is running |
Other tests are running. Try again in a minute. | all test slots are busy |
You have started 5 tests in 10 minutes. Try again in 4 minutes. | the limit per visitor is reached; the time is until the oldest test drops out |
The test cannot reach the internet right now. Try again later. | the test's way out is down |
Deep links
A link with the host name starts the test when the page opens:
https://troubleshooting.tools/check/ssl/example.com
https://troubleshooting.tools/check/ssl/mail.example.com?port=993
https://troubleshooting.tools/check/ssl/example.com?ip=192.0.2.10
Without port the test uses 443. With ip it tests that one address of the host
name, which has to be one of its addresses.
Without ip the first address is tested. The address bar shows such a link after every test, so it can
be shared with the Share button.
Reading the grade
The grade uses the scale SSL Labs publishes, so grades from both compare. It is our own grade, though, and not one from SSL Labs.
| Grade | Meaning |
|---|---|
| A+ | A good setup without warnings, and HSTS of at least six months on HTTPS. |
| A | A good setup. |
| A- | A good setup with warnings, such as no TLS 1.3 or no HSTS on HTTPS. |
| B, C | Weaknesses worth fixing, such as TLS 1.0 still being on, or 3DES. |
| D, E, F | Serious problems, such as SSL 2.0, export cipher suites or short keys. |
| T | The certificate is not trusted: expired, self-signed, revoked or from an unknown authority. |
| M | The certificate does not name the tested host. |
Three scores from 0 to 100 stand next to the grade: protocol support, key exchange and cipher strength. Together they give a first letter. Findings can then lower it: each one in the Findings panel says how far, for example Max B for TLS 1.0 or Warning for one that turns an A into an A-. The lowest of them decides.
With T or M, the summary also shows the grade the server would get without the certificate problem, so the rest of the setup can be judged on its own.
What gets checked
| Panel | What it shows |
|---|---|
| Certificate | Names, issuer, validity, key, signature, Certificate Transparency and revocation information, and the certificate chain up to a trusted root, certificate by certificate: its role, subject, issuer, validity with the days left, key, signature and fingerprint, and whether the server sent it, it had to be fetched or it comes from the trust store. Certificates the server sends without the chain needing them are listed apart. |
| Protocols | Which of TLS 1.3, 1.2, 1.1, 1.0, SSL 3.0 and SSL 2.0 the server accepts. |
| Cipher Suites | Every suite per protocol version, rated strong, weak or insecure, and whether the server picks by its own order, by the client's, or by its own while letting the client decide between some. Below them the key exchange groups the server accepts. |
| Handshake | Secure renegotiation, extended master secret, downgrade protection, OCSP stapling, session tickets, ALPN, compression, and the size of Diffie-Hellman parameters. |
| HTTP and DNS | The HSTS header and where plain HTTP on port 80 leads, for HTTPS ports; CAA records for every port. |
| Known Weaknesses | POODLE (SSL 3.0), BEAST, SWEET32, FREAK, Logjam, CRIME, RC4, insecure renegotiation, DROWN, and NULL or anonymous suites, read off the other results; and, by sending a crafted message and reading the answer, Heartbleed, OpenSSL CCS injection, Ticketbleed, ROBOT, the CBC padding oracles POODLE-TLS, GOLDENDOODLE and Zombie POODLE, and whether the server lets the client start a renegotiation. Each one is explained on the SSL/TLS weaknesses page. A probe that can neither confirm nor rule a bug out reports it as inconclusive rather than as passed. |
| Revocation | Whether the certificate has been revoked, asked of its OCSP responder through the same VPN. |
Limits
- Five tests per visitor in ten minutes. A kept result does not count.
- A host and port are tested once at a time; a second request while one runs is asked to wait.
- Results are kept for an hour.
- A test runs for at most 90 seconds. One that runs out of time says which checks are missing.
- Servers are reached over IPv4. A name with only IPv6 addresses cannot be tested yet. When a name has several addresses, one is tested at a time, and each counts as a test.
- Only public servers can be tested, and only on the ports listed above.
No public API
There is no public API for this tool. The test runs from the web interface only, and its endpoint serves only this page.
Privacy
The test runs from our servers: the tested server sees our address, not yours. The host name is looked up through a public DNS resolver, and where the certificate names an OCSP responder, that responder is asked whether the certificate has been revoked; both see our address, not yours. Tested hosts appear in server logs for operational purposes, and results are kept for an hour so that the same test is not run twice. To count tests per visitor, your address is kept only as a keyed hash, and only for ten minutes.