Guide
AWS ALB listener certificate expired
Attach a renewed ACM or IAM certificate to the ALB HTTPS listener and SNI rules, then verify the customer hostname from the internet—not only the EC2 PEM behind the target group.
Updated May 30, 2026 818 words
aws alb ssl certificate expired means the Application Load Balancer listener—not your Auto Scaling instances—presents a leaf past notAfter on the hostname customers resolve in Route 53.
ALBs terminate TLS on the listener certificate and optional additional certificates selected by SNI host-header rules. Target groups speak HTTP or separate TLS to backends; renewing a cert on EC2 does not update what browsers see on the ALB DNS name or your branded alias.
ACM often auto-renews in us-east-1 or regional accounts, but attachment to the listener still fails when validation records lapse or teams import a new cert without swapping the listener ARN. Incidents look like uniform 502 or TLS warnings across every target.
You will map the listener, list certificates, renew or import in ACM, modify listener bindings, and openssl the Route 53 alias your users type.
What to check
Identify the public hostname (customer DNS) and whether it aliases the ALB or a CloudFront distribution in front. Openssl must use that hostname with SNI, not the internal target hostname.
Collect the load balancer ARN, HTTPS listener ARN, default certificate ARN, and any rule-priority SNI certificates. Default listener cert may differ from the cert served for api.example.com on rule priority 10.
For ACM certificates, confirm status ISSUED and that DNS validation CNAMEs still exist in the authoritative zone. EXPIRED or VALIDATION_TIMED_OUT in ACM explains listener attachment of stale material.
Compare with load balancer presenting an expired certificate when multiple cloud edges stack—only the outermost listener matters for browser errors.
Tag load balancers and listeners in AWS Resource Groups so on-call can find ARNs during pager events. Export a monthly report from AWS Config or your CMDB that pairs Route 53 alias targets with listener default certificate ARNs. Hybrid estates that terminate TLS on both ALB and CloudFront need two renewal tracks; this guide covers ALB only.
Step-by-step
Confirm expiry externally
HOST=app.example.com
echo | openssl s_client -connect "${HOST}:443" -servername "${HOST}" 2>/dev/null \
| openssl x509 -noout -dates -serial -subject
Find the ALB and listener (AWS CLI)
aws elbv2 describe-load-balancers --names my-alb --query 'LoadBalancers[0].LoadBalancerArn' --output text
LB_ARN="arn:aws:elasticloadbalancing:region:acct:loadbalancer/app/my-alb/..."
aws elbv2 describe-listeners --load-balancer-arn "$LB_ARN" \
--query 'Listeners[?Port==`443`].[ListenerArn,Certificates[0].CertificateArn]' --output table
Save LISTENER_ARN from output.
List all certificates on the listener
aws elbv2 describe-listener-certificates --listener-arn "$LISTENER_ARN" --output table
Match CertificateArn values to the serial openssl showed (via ACM describe) or note which ARN still maps to expired material.
Inspect ACM status
aws acm describe-certificate --certificate-arn "$CERT_ARN" \
--query 'Certificate.{Status:Status,NotAfter:NotAfter,DomainName:DomainName,Validation:DomainValidationOptions}' \
--output yaml
If status is not ISSUED, fix DNS validation records Route 53 or your DNS vendor hosts, then wait for reissuance.
Attach renewed certificate
When ACM issued a replacement cert with a new ARN:
aws elbv2 add-listener-certificates --listener-arn "$LISTENER_ARN" \
--certificates CertificateArn="$NEW_CERT_ARN"
aws elbv2 remove-listener-certificates --listener-arn "$LISTENER_ARN" \
--certificates CertificateArn="$OLD_CERT_ARN"
To change the default certificate:
aws elbv2 modify-listener --listener-arn "$LISTENER_ARN" \
--certificates CertificateArn="$NEW_CERT_ARN"
Console path (same operations)
In EC2 → Load Balancers, select the ALB → Listeners tab → select the HTTPS:443 listener → View/edit certificates. Add the new ACM certificate, set it as default if needed, remove the expired ARN, and save.
Verify after change
curl -vI --connect-timeout 10 "https://${HOST}/" 2>&1 | grep -Ei 'expire|SSL certificate|subject'
Re-run openssl; serial and notAfter must change. No target group deregistration is required for cert-only swaps.
SNI rules when only one hostname fails
aws elbv2 describe-rules --listener-arn "$LISTENER_ARN" --output table
Rules with host-header conditions may attach alternate certificate ARNs. Renew the ARN referenced on the failing rule priority, not only the default listener certificate.
Route 53 alias sanity
aws route53 list-resource-record-sets --hosted-zone-id ZONE_ID \
--query "ResourceRecordSets[?Name=='app.example.com.']"
Confirm the alias target matches the load balancer you updated. Stale aliases to retired load balancers produce openssl results that look like a failed cert swap when you edited the wrong ARN.
How to read the output
describe-listener-certificates shows IsDefault true on the cert browsers get when SNI does not match a more specific rule. Listener rules with Host header conditions may attach alternate ARNs—grep rule priorities in describe-rules when only one hostname fails.
ACM NotAfter in describe-certificate is authoritative for managed certs. If ACM shows future NotAfter but openssl does not, you are still attached to the wrong ARN or hitting a different load balancer via stale DNS.
ELB DNS name check: openssl against the load balancer DNS without matching ServerName may show the default cert’s dates—always pass the customer hostname.
Health checks over HTTPS on targets are unrelated to listener expiry, yet tickets bundle them. Clarify in the incident channel that target group health can stay green while listener TLS fails—executives understand faster when you openssl the customer hostname first.
Change records should cite both old and new certificate ARN and attach openssl before and after transcripts. auditors and partner integrations use those attachments when proving contract compliance after aws alb ssl certificate expired events.
Common mistakes
Renewing on instances while the listener still references last year’s default certificate ARN.
Importing a renewed cert into ACM as a new ARN without removing the expired listener binding—both appear until you remove-listener-certificates.
Letting ACM validation CNAMEs lapse during a DNS migration, so auto-renew never completes while the old cert expires.
Forgetting us-east-1 only applies to CloudFront-associated ACM certs—regional ALBs need certs in the same region as the load balancer.
Testing only the amazonaws.com DNS name of the ALB when users hit a Route 53 alias with different SNI rules.
Assuming AWS ACM automatic renewal failed messages mean listeners self-update without describe-listener-certificates proof.
Using describe-load-balancers in the wrong region—ALB ARNs are regional; CLI profiles must match the workload region.
Closing incidents without saving listener ARN and certificate ARN in the ticket—same failure repeats next year because nobody recalls which rule held api.example.com.
When to use automation
Elastic architectures recreate targets hourly; the stable TLS identity is the listener ARN set. Track live TLS on the customer hostname in Route 53, not inventory tags on EC2.
ssldays presents the live leaf (issuer, SANs, chain, expiry) and alerts at 30, 14, 7, and 1 days. RDAP on the registration helps when validation needs a healthy apex zone. Email on all plans; Slack and Discord on Starter and Pro; three domains daily free, twenty-five hourly Starter, one hundred Pro.
Probe from /check after every listener change, then /register for ongoing watches. If CloudFront sits in front, also read CloudFront custom SSL certificate expired.
Frequently asked questions
NLB versus ALB?
Network Load Balancers with TLS listeners use similar certificate APIs. This guide focuses on ALB HTTPS listeners; swap describe calls for your balancer type.
Can I use IAM server certificates?
Legacy IAM uploads still work but ACM is preferred. IAM cert expiry must be tracked manually—no ACM renewal emails.
Why one hostname on a shared ALB?
SNI listener rules map hostnames to different certificate ARNs. Renew only the ARN tied to the failing rule priority.
Do I restart targets?
No. Certificate changes are listener-side. Drain cycles are unrelated unless you change health check paths during the same change window.
Monitor this hostname on a schedule
Live certificate checks and renewal reminders — not guesswork from PEM files.