How to Fix SSL Certificate Errors

By Kalenfy · Updated 27 June 2026 · 7 min read

How to Fix SSL Certificate Errors

TL;DR: Most SSL certificate errors fall into four categories — expired certificate, untrusted issuer, hostname mismatch, and mixed content. Each has a distinct browser error code and a specific fix. This guide covers all of them. Run a free Kalenfy scan to check your certificate status, expiry date and HTTPS configuration without opening DevTools.

SSL error quick-reference

Error codeCauseFix
NET::ERR_CERT_DATE_INVALIDCertificate expiredRenew the certificate
NET::ERR_CERT_AUTHORITY_INVALIDSelf-signed or unknown CAInstall a cert from a trusted CA
NET::ERR_CERT_COMMON_NAME_INVALIDHostname mismatchIssue cert for the correct domain
SSL_ERROR_RX_RECORD_TOO_LONGHTTP served on HTTPS portFix server config to serve HTTPS on 443
ERR_SSL_PROTOCOL_ERRORTLS version mismatch or cipher issueEnable TLS 1.2/1.3; disable SSLv3/TLS 1.0
ERR_SSL_VERSION_OR_CIPHER_MISMATCHNo shared cipher suiteUpdate server TLS config
Mixed Content warningHTTP resources on HTTPS pageFix mixed content

Fix 1 — Expired certificate (NET::ERR_CERT_DATE_INVALID)

This is the most common SSL error. Your certificate has a fixed validity period (typically 90 days for Let's Encrypt, up to 397 days for paid CAs). When it expires, browsers block the site entirely.

How to renew

Prevent future expiry: Set a calendar reminder 30 days before expiry, or use a monitoring tool. The Kalenfy scanner shows expiry dates in the free report.

Fix 2 — Untrusted or self-signed certificate (ERR_CERT_AUTHORITY_INVALID)

Browsers maintain a built-in list of trusted Certificate Authorities (CAs). If your certificate was issued by a CA not on that list — or if you issued a self-signed cert — browsers show this error.

Causes and fixes

Fix 3 — Hostname mismatch (NET::ERR_CERT_COMMON_NAME_INVALID)

The certificate is valid but was issued for a different domain name. Common causes:

Fixes

Fix 4 — HTTP served on HTTPS port (SSL_ERROR_RX_RECORD_TOO_LONG)

This error means your server is sending an unencrypted HTTP response on port 443 — the port browsers expect to use for TLS. The browser tries to start a TLS handshake but gets a plain HTTP response, which is too long for a TLS record header.

Fix: check your web server config. The HTTPS virtual host must use SSL/TLS:

# nginx — verify this block exists for port 443
server {
    listen 443 ssl;
    ssl_certificate /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;
    ...
}

# Apache — verify mod_ssl is loaded and VirtualHost uses SSL
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
    ...
</VirtualHost>

Fix 5 — TLS protocol / cipher mismatch

ERR_SSL_PROTOCOL_ERROR or ERR_SSL_VERSION_OR_CIPHER_MISMATCH appear when the browser and server cannot agree on a TLS version or cipher suite.

How to check your certificate without a browser

# Check certificate expiry and details
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issuer

# Verify the full chain
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts < /dev/null

# Check certificate from an external tool
curl -vI https://yourdomain.com 2>&1 | grep -E 'SSL|subject|expire'

FAQ

My certificate shows as valid in the browser but the Kalenfy scan flags it — why?

Kalenfy checks the certificate directly from the server (not via CDN cache). If you use Cloudflare, the browser sees Cloudflare's certificate, but the origin certificate between Cloudflare and your server may be self-signed or expired. Fix: in Cloudflare SSL/TLS → Overview, set to Full (strict) and ensure a valid certificate is installed on your origin server.

How long does it take for a new SSL certificate to propagate?

Certificate installation takes effect immediately on the server — there's no DNS propagation delay. However, if you're behind a CDN or load balancer, you may need to deploy the new cert to each edge node, which can take minutes.

Do I need an SSL certificate for a site that doesn't take payments?

Yes. HTTPS is required for all sites: it protects session cookies, prevents injection of ads or malware by ISPs, is a Google ranking signal, and is required by browsers to enable modern APIs (geolocation, service workers, push notifications). Let's Encrypt makes it free with no excuse not to.

Check your own domain — free

Kalenfy runs a passive scan of your SPF, DKIM, DMARC, DNSSEC, CAA and more, then gives you a downloadable PDF report with exact fixes. You see your grade first — no email needed to view it.

Scan my site free

Related guides