Skip to main content

Free Tool

SSL & TLS Certificate Checker

Verify your certificate validity and expiration, TLS version support, cipher suite strength, HSTS enforcement, and HTTP-to-HTTPS redirect configuration — in one scan.

Sign in with Google or GitHub to run the scan. Your first scan is free — no credit card required.

ZeriFlow Data — 12,400+ sites scanned

Across 12,400+ sites scanned on ZeriFlow, 29% still accept TLS 1.1 connections — a protocol deprecated by RFC 8996 in March 2021. A further 8% still support TLS 1.0, flagged as critically insecure by all major browsers since 2020.

What This Tool Checks

Six categories of TLS configuration that directly affect both security and browser trust indicators.

1. Certificate Validity & Expiry

We verify the certificate is issued by a publicly trusted Certificate Authority, the domain matches (no CN mismatch), and the expiration date is more than 14 days away. Certificates expiring within 30 days trigger a warning.

An expired certificate triggers the full “Your connection is not private” interstitial in Chrome, Firefox, and Safari. Studies consistently show 97%+ of users abandon sites that show this warning. Use Let's Encrypt with certbot renew --pre-hook and a cron job to auto-renew 30 days before expiry.

2. TLS Version Support

We test which TLS versions your server will accept and flag deprecated versions.

VersionStatusNotes
TLS 1.3RecommendedDefault in Nginx 1.13+, Apache 2.4.37+. 0-RTT resumption, no insecure ciphers.
TLS 1.2Minimum acceptableRequired for PCI-DSS compliance. Disable insecure cipher suites explicitly.
TLS 1.1Deprecated (RFC 8996)Browsers show mixed content warnings. Disable immediately.
TLS 1.0Critical — disableVulnerable to POODLE, BEAST. Blocked by PCI-DSS since June 2018.

Nginx — disable TLS 1.0 and 1.1

ssl_protocols TLSv1.2 TLSv1.3;

3. Cipher Suites

Cipher suites define the cryptographic algorithms used during a TLS session. Weak cipher suites allow attackers to decrypt traffic if they have enough computation or if the algorithm is broken.

Cipher suites to disable: RC4 (broken), DES and 3DES (SWEET32 attack), EXPORT ciphers (intentionally weak, used in FREAK attack), anonymous DH (no authentication), NULL encryption.

Perfect Forward Secrecy (PFS) is guaranteed by cipher suites using ECDHE or DHE key exchange. PFS means a future compromise of your server's private key cannot be used to decrypt recorded past sessions — each session key is ephemeral and never stored.

Mozilla Intermediate configuration (recommended baseline)

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;

4. HSTS (Strict-Transport-Security)

A valid SSL certificate ensures the connection is encrypted. HSTS ensures the browser always initiates that encrypted connection — without an HTTP first step that could be intercepted.

Without HSTS, even with a valid certificate, a user on a coffee shop Wi-Fi can have their first HTTP request intercepted before the server redirects to HTTPS. The attacker strips TLS and reads the connection in plaintext — the user's browser shows no warning.

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

5. HTTP to HTTPS Redirect

We verify that your server redirects all HTTP traffic to HTTPS and check the redirect status code. A 307 Temporary Redirect means browsers may retry HTTP on future visits. 308 Permanent Redirect is semantically correct for HSTS preloading and SEO — search engines update their index to the HTTPS URL.

Nginx — permanent HTTP to HTTPS redirect

server {
    listen 80;
    server_name example.com www.example.com;
    return 308 https://$host$request_uri;
}

6. Certificate Chain Completeness

A valid TLS handshake requires your server to send the complete chain: your domain certificate, the intermediate CA certificate(s), up to a root CA trusted by the client. Modern browsers cache intermediate certificates, but an incomplete chain fails on Android 7 and older, Windows XP, embedded devices, and CLI tools like curl without system CA bundles.

Common mistake: only deploying the domain certificate without the intermediate CA. This works in Chrome (which caches intermediates) but breaks in curl, Postman, and older mobile browsers — causing silent API failures in production.

Nginx — correct certificate configuration

# fullchain.pem = domain cert + intermediate(s). NOT cert.pem alone.
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Frequently Asked Questions

faq

How do I know if my SSL certificate is expired?

An expired certificate causes browsers to display a full-page 'Your connection is not private' warning with error code NET::ERR_CERT_DATE_INVALID. You can check expiry proactively with this tool — we show the exact expiration date and flag any certificate expiring within 30 days. Let's Encrypt certificates expire every 90 days, so automated renewal (via certbot or acme.sh) is strongly recommended.

faq

What is TLS 1.3 and why should I upgrade?

TLS 1.3 (RFC 8446, August 2018) is the current version of the Transport Layer Security protocol. Compared to TLS 1.2, it removes insecure cipher suites, mandates Perfect Forward Secrecy, and reduces handshake latency by one round-trip (0-RTT resumption). Modern browsers prefer TLS 1.3 when available. TLS 1.0 and 1.1 are deprecated by RFC 8996 and produce browser security warnings.

faq

What is Perfect Forward Secrecy?

Perfect Forward Secrecy (PFS) means each TLS session uses a unique, ephemeral key pair. Even if an attacker records encrypted traffic today and later compromises your private key, they cannot decrypt past sessions — each session key is discarded immediately after use. PFS requires cipher suites using ECDHE or DHE key exchange. Cipher suites starting with RSA key exchange (e.g., TLS_RSA_WITH_AES_128_CBC_SHA) do not provide PFS.

faq

Why does Chrome show 'Not Secure' even with HTTPS?

Chrome shows 'Not Secure' on HTTPS pages when the connection is technically encrypted but has a quality issue: the certificate is self-signed or from an untrusted CA, the certificate is expired, the page loads mixed content (HTTP resources embedded in an HTTPS page), or the TLS version used is deprecated (TLS 1.0 or 1.1). Run the SSL checker to identify the exact cause.

faq

How often should I check my SSL certificate?

At minimum, check 30 days before expiry and immediately after any server or DNS configuration change. For production sites, use automated monitoring — ZeriFlow can scan on schedule and alert you to expiry or configuration regressions. Let's Encrypt certificates expire every 90 days, so automated renewal with a 30-day safety margin is the standard practice.

Check Headers, Cookies, DNS, and Email Security Too

The SSL checker covers TLS configuration. ZeriFlow's full scanner runs 80+ checks across 12 categories including security headers, cookie flags, DMARC, SPF, DKIM, and source code vulnerabilities.