Skip to content
ssldays

Guide

Redirect loops caused by expired HTTPS certificates

HTTPS redirects plus dead TLS can trap browsers in loops. Map redirect rules against live certificate validity on every hop and renew the cert each hop terminates.

Updated Mar 19, 2026 843 words

Redirect loops with dead TLS happen when HTTP→HTTPS rules fire but HTTPS handshakes fail on expired certificates.

Browsers spin forever between 301 targets when each hop enforces HTTPS yet presents invalid certs.

Map redirects with curl -IL and openssl every hostname in the chain.

First response

HTTPS redirects plus dead TLS can trap browsers in loops. Map redirect rules against live certificate validity on every hop and renew the cert each hop terminates.

Search interest in redirect loop ssl expired rises when the leaf notAfter on the hostname customers type is already in the past. Clients cannot rewrite server certificate dates; they only accept chains that pass PKIX checks at handshake time.

For Redirect loops caused by expired HTTPS certificates, prove the failure from outside your office VPN before you change application code, purge caches, or ask end users to reboot. Capture the broken serial number and notAfter, renew on the listener that actually terminates that name, reload every node in the path, then re-run the same OpenSSL and browser checks that opened the incident.

Escalations for redirect-loop-ssl-expired should cite fresh openssl per hostname in the redirect map output before anyone edits client code or blames Wi‑Fi. HTTPS redirects plus dead TLS can trap browsers in loops. Map redirect rules against live certificate validity on every hop and renew the cert each hop terminates. When ERR_TOO_MANY_REDIRECTS when HTTPS fails mid-chain clusters around Browsers following 301 chains, the expired material is usually bound to each hop that terminates TLS on redirect targets instead of a mysterious platform bug. Executive summaries need the public hostname and current notAfter, not screenshots from a VPN-split test laptop.

See also Android SSL certificate expired errors and Certificate chain incomplete in the browser.

What this error means

TLS failure is not a 3xx, but users perceive loops when error pages reload or HSTS retries alternate hosts.

Marketing vanity domains may redirect into an expired app subdomain.

Renew certs on each hop that terminates TLS, simplify redirect chains, retest with clean cache.

In PKIX terms, Browsers following 301 chains treat the TLS Certificate message as authoritative: signatures must verify, each link must be within notBefore/notAfter, and only then does name matching run against CN and SAN. When the leaf expired, ERR_TOO_MANY_REDIRECTS when HTTPS fails mid-chain is expected even if the issuer is publicly trusted. Guides titled redirect loop ssl expired still require reading dates on every certificate the server sends, including forgotten cross-sign intermediates.

Triage for redirect loop ssl expired should reject quick myths: flushing DNS or rebooting laptops does not move server notAfter forward. It is not proof the whole internet is broken when other HTTPS sites load for Browsers following 301 chains. It is not interchangeable with registrar billing lapses unless revalidation fails later. It is not fixed by turning off TLS at the load balancer while marketing keeps publishing https:// links. Validated externally, openssl per hostname in the redirect map must show fresh dates on each hop that terminates TLS on redirect targets before you close the incident.

Common causes

These patterns appear often during redirect loop ssl expired incidents. They are not exhaustive, but they explain why renewal looked finished internally while strangers still received expired material.

Runbooks for redirect loop ssl expired most often break at handoff: certbot or a vendor portal issued new certs, but each hop that terminates TLS on redirect targets never received a reload. Teams tracked PEM files in git while production continued serving the previous listener binding. OV renewals waited on legal approvers until ERR_TOO_MANY_REDIRECTS when HTTPS fails mid-chain became customer-visible. Inventory spreadsheets omitted the hostname that Browsers following 301 chains actually call during peak traffic.

Architecture amplifies redirect loop ssl expired: multiple regions, canary pools, or blue/green deploys can leave one ASG member presenting yesterday's fullchain. Shared IP default certificates silently terminate vanity hostnames without dedicated SNI rules. Mounted TLS secrets updated on disk while Envoy or nginx workers kept the old chain until signaled. HTTPS redirects plus dead TLS can trap browsers in loops becomes harder to debug when only a fraction of Browsers following 301 chains hit the stale anycast node.

Measurement gaps complete the story for redirect loop ssl expired. Synthetic monitors that disable certificate verification greenlit deploys that fail for real Browsers following 301 chains. Redirect maps hid which hop expired until operators ran openssl per hostname in the redirect map per hostname. Dashboards celebrated TCP uptime while notAfter crossed midnight UTC without a page. Post-mortems should ask whether CT logs or stapled OCSP would have warned days earlier.

Confirm from the outside

OpenSSL

echo | openssl s_client -connect HOST:443 -servername HOST 2>/dev/null | openssl x509 -noout -dates -subject -issuer

Check every host returned in Location headers.

How to read the output

Start with openssl per hostname in the redirect map against the live customer hostname, capturing the leaf presented after SNI selection. Interpret notBefore= and notAfter= first: past notAfter guarantees failure for ERR_TOO_MANY_REDIRECTS when HTTPS fails mid-chain regardless of pretty issuer branding. Next read subject= and any X509v3 Subject Alternative Name extension for alignment with the URL bar. Finally note issuer= so you know whether renewal changed intermediates; record serial numbers in the ticket for post-deploy diffing.

curl

curl -vI --connect-timeout 10 https://HOST/ 2>&1 | grep -Ei 'expire|SSL certificate|subject:|issuer:'

curl -IL reveals redirect depth; stop at first TLS error.

Browser spot-check

DevTools Network shows redirect chain ending at failed HTTPS.

Fix checklist

Work this list in order for redirect loops caused by expired https certificates. Each step should produce evidence (command output, timestamps, serial numbers) you can paste into the incident ticket.

  1. Document redirect graph from apex to app.
  2. OpenSSL each terminating hostname.
  3. Renew expired certs per hop.
  4. Remove redundant http→https hops after fix.
  5. Lower HSTS max-age only if policy allows.
  6. Clear CDN redirect rules referencing old hosts.
  7. Retest in incognito after fix.
  8. Add per-hop TLS monitors.

Roll out and verify

Procurement for redirect loop ssl expired begins with a reissue that lists every hostname Browsers following 301 chains need, including forgotten admin and callback URLs. Validate CSR/key pairs, download CA bundles, and schedule work on each hop that terminates TLS on redirect targets during a staffed change window. If automation handles ACME, prove challenges use the same DNS names customers resolve publicly, not internal-only labels.

Installation for redirect loop ssl expired means concatenating leaf and required intermediates the way your stack documents, then touching every node that terminates the name. Reload web servers, recycle ingress pods, or update cloud listener objects so data planes read new bytes. For load balancers, sync default and per-host certificates so SNI cannot fall back to expired defaults. Repeat openssl per hostname in the redirect map until fingerprints or serials change everywhere responders tested earlier.

Verification for redirect loop ssl expired must mimic strangers: external synthetics, mobile carriers, and CI jobs without corporate trust roots. Confirm ERR_TOO_MANY_REDIRECTS when HTTPS fails mid-chain disappeared for Browsers following 301 chains on flows heavier than GET /. Restore any strict TLS, HSTS, or CDN SSL modes relaxed during firefighting. Feed the hostname into continuous notAfter monitoring with thresholds well before the next CA-enforced renewal cliff.

What to automate

Certificate files on disk lie. Automate live TLS checks on the exact hostname and port users hit, including redirects and the certificate presented after TLS terminates on a load balancer or CDN. Pair certificate notAfter with RDAP domain registration expiry so re-validation is not blocked by a lapsed registrar.

Alert when redirect depth changes alongside TLS failures. Schedule alerts at 30, 14, 7, and 1 day before expiry so on-call has runway for ACME failures, manual OV revalidation, or change windows. Services such as ssldays can run external checks and renewal reminders without replacing your CA workflow.

Frequently asked questions

Only Chrome loops?

Compare redirect chain; Safari may stop earlier with cert error.

CDN redirect?

Edge may redirect while origin cert expired under strict mode.

www vs apex?

Each name needs valid cert on terminating rule.

After renew still loops?

Flush CDN redirect cache and browser HSTS entry if host changed.

See what the server presents right now

Free live certificate check — no signup.