Skip to content
RU

Methodology · Open formula

SSL/TLS Grade methodology v1.2

Open formula: seven rows, 100 points, a letter from A+ to F.

TL;DR. The SSL/TLS Grade (v1.2) adds up seven rows worth 100 points: certificate validity 30, hostname 10, key strength 15, accepted protocol versions 20, bits of the negotiated cipher 10, intermediate certificates sent by the server 5, HSTS 10. Letters: A+ from 95, A from 85, B from 70, C from 55, D from 40, F below; an expired or not-yet-valid certificate is F whatever the sum. The grade is computed by src/ssl.php (calculateSslGrade); the /ssl tool, its API, the SSL badge, the report /report/{domain}/ssl and the «Verified by Enterno» catalog show the same one.
Validity30Hostname10Key15Protocol20Cipher10Chain5HSTS10
Changelog. v1.2 (2026-10-05) — a *.example.com certificate counts only for subdomains one level deep, not for example.com and not for a.b.example.com (as in browsers); the CN is not used — as in browsers since 2017. Before, both counted, so a certificate a browser refuses earned the hostname and validity points. v1.1 (2026-10-05) — the formula did not change; its description did. Since publication this page had described a formula the engine never computed: 100 points in seven rows, not 45 in six; key strength (15) and HSTS (10) are scored and were missing; protocols are scored by what the server accepts, with old TLS 1.0/1.1 costing points, not by the version negotiated; the cipher is scored by its bits, not by AEAD and forward secrecy; the chain row checks that the server sent intermediates, not trust or AIA; OCSP, CRL and AIA are not part of the grade; there is no cap at C or D — only an expired or not-yet-valid certificate forces F; the letters are A+ from 95, A from 85, B from 70, C from 55, D from 40. v1.0 (2026-05-05) — first publication.

1. Certificate validity — 30

  • 30 — in force: started, not expired, the hostname in the SAN, more than 30 days left
  • 20 — the same, with 30 days or fewer left
  • 0 — expired, not yet valid, or issued for another name

2. Hostname — 10

  • 10 — the requested name is in the SAN (Subject Alternative Name), matched the way browsers match it. The CN is not used, as in browsers since 2017; an IP address must be an IP entry of the SAN. *.example.com covers subdomains one level deep (www.example.com), not example.com itself and not a.b.example.com; the * stands only for the whole left-most label (f*.example.com covers nothing), never for an IP address, and needs at least two labels after it (*.com covers nothing; a public-suffix wildcard such as *.co.uk is not detected — CAs do not issue them); case and one trailing dot do not matter; a Cyrillic name is compared in its punycode form (xn--…), which is how the certificate carries it

3. Key strength — 15

  • 15 — EC of 256 bits or more, or any key of 4096 bits or more
  • 10 — from 2048 bits
  • 0 — shorter

4. Protocol versions — 20

  • 20 — TLS 1.3 accepted, TLS 1.0 and 1.1 refused
  • 15 — TLS 1.2 accepted, TLS 1.0 and 1.1 refused
  • 10 — TLS 1.2 accepted, and TLS 1.0 or 1.1 too
  • 0 — otherwise (no TLS 1.2, and either no TLS 1.3 or legacy versions still on)

Each version is tried with its own handshake to the same address. Old versions are forbidden by RFC 8996.

5. Cipher — 10

  • 10 — the negotiated cipher has 256 bits or more
  • 7 — from 128 bits
  • 0 — fewer

Forward secrecy and the cipher class (AEAD, CBC, RC4…) are shown on /ssl but are not scored.

6. Intermediate certificates — 5

  • 5 — the server sent at least one certificate besides its own

Whether the chain leads to a trusted root is not verified: the probe connects without verification so that a site with a broken chain still gets a report.

7. HSTS — 10

  • 10 — Strict-Transport-Security with max-age ≥ 31536000
  • 5 — present with a shorter max-age
  • 0 — absent, or the HTTPS request did not answer

Read from a HEAD request to https://{host}/ without following redirects.

Grade letter mapping

Expired or not yet valid → F whatever the sum

ScoreGrade
95–100A+
85–94A
70–84B
55–69C
40–54D
0–39F

Shown on /ssl next to the grade but not part of it: OCSP revocation and stapling, Certificate Transparency, CAA, forward secrecy.

Versioning

Current version — v1.2, updated . Every change to the published formula — the weights or their description — is a new version with a line in the changelog above.

Run an SSL/TLS check →

Calculator

Set the certificate and the connection — the grade follows the same rules as the /ssl check.

Certificate
Protocols and cipher
--
A


  
Check my site →