Skip to content
ssldays

Guide

wget certificate verify failed expired

wget certificate verify failed means OpenSSL rejected notAfter during HTTPS download. Compare wget, curl, and openssl against the same URL after you renew and reload the web server.

Updated Mar 19, 2026 819 words

wget certificate verify failed on HTTPS downloads means OpenSSL rejected the server date—renew and retest the same URL.

Mirror scripts and legacy deploy jobs still depend on wget; expiry breaks them before curl-based tooling.

Compare wget, curl, and openssl on one URL to avoid tool-specific red herrings.

First response

wget certificate verify failed means OpenSSL rejected notAfter during HTTPS download. Compare wget, curl, and openssl against the same URL after you renew and reload the web server.

Search interest in wget certificate 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 wget certificate verify failed expired, 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 wget-certificate-expired should cite fresh wget --debug plus openssl on the same artifact URL output before anyone edits client code or blames Wi‑Fi. wget certificate verify failed means OpenSSL rejected notAfter during HTTPS download. Compare wget, curl, and openssl against the same URL after you renew and reload the web server. When certificate verify failed on nightly downloads clusters around wget batch jobs, the expired material is usually bound to HTTPS mirrors wget follows 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 curl: SSL certificate problem: certificate has expired and Load balancer presenting an expired certificate.

What this error means

GNU wget validates certificates when CA support is compiled in. Expired certs abort downloads.

--no-check-certificate is for labs only.

Fix server TLS, rerun wget without insecure flags, bake command into monitors.

In PKIX terms, wget batch jobs 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, certificate verify failed on nightly downloads is expected even if the issuer is publicly trusted. Guides titled wget certificate expired still require reading dates on every certificate the server sends, including forgotten cross-sign intermediates.

Triage for wget certificate 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 wget batch jobs. 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, wget --debug plus openssl on the same artifact URL must show fresh dates on HTTPS mirrors wget follows before you close the incident.

Common causes

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

Runbooks for wget certificate expired most often break at handoff: certbot or a vendor portal issued new certs, but HTTPS mirrors wget follows 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 certificate verify failed on nightly downloads became customer-visible. Inventory spreadsheets omitted the hostname that wget batch jobs actually call during peak traffic.

Architecture amplifies wget certificate 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. wget certificate verify failed means OpenSSL rejected notAfter during HTTPS download becomes harder to debug when only a fraction of wget batch jobs hit the stale anycast node.

Measurement gaps complete the story for wget certificate expired. Synthetic monitors that disable certificate verification greenlit deploys that fail for real wget batch jobs. Redirect maps hid which hop expired until operators ran wget --debug plus openssl on the same artifact URL 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

Use same HOST as wget URL after redirects.

How to read the output

Start with wget --debug plus openssl on the same artifact URL against the live customer hostname, capturing the leaf presented after SNI selection. Interpret notBefore= and notAfter= first: past notAfter guarantees failure for certificate verify failed on nightly downloads 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:'

Parallel curl confirms shared root cause.

Browser spot-check

If browser blocks, wget should fail too.

Fix checklist

Work this list in order for wget certificate verify failed expired. Each step should produce evidence (command output, timestamps, serial numbers) you can paste into the incident ticket.

  1. Capture wget error with timestamp.
  2. OpenSSL notAfter from external host.
  3. Renew and deploy fullchain.
  4. Reload web tier.
  5. Rerun wget in CI.
  6. Remove --no-check-certificate hacks.
  7. Update artifact mirror URLs if moved.
  8. Document supported TLS versions.

Roll out and verify

Procurement for wget certificate expired begins with a reissue that lists every hostname wget batch jobs need, including forgotten admin and callback URLs. Validate CSR/key pairs, download CA bundles, and schedule work on HTTPS mirrors wget follows 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 wget certificate 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 wget --debug plus openssl on the same artifact URL until fingerprints or serials change everywhere responders tested earlier.

Verification for wget certificate expired must mimic strangers: external synthetics, mobile carriers, and CI jobs without corporate trust roots. Confirm certificate verify failed on nightly downloads disappeared for wget batch jobs 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.

Keep wget-based legacy jobs on TLS monitors. 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

Old glibc CA bundle?

Update agent image after server fix if mistrust persists.

FTP vs HTTPS?

This guide applies to HTTPS downloads only.

Proxy env vars?

HTTPS proxy presents its own cert—check both hops.

Resume downloads?

TLS must succeed before Range requests work.

See what the server presents right now

Free live certificate check — no signup.