| name | certificate-expiry-incident |
| enabled | true |
| description | Use when performing certificate expiry incident — tLS/SSL certificate expiry
incident response and prevention playbook. Covers emergency certificate
renewal, impact assessment, interim mitigations, certificate chain validation,
automated renewal configuration, monitoring setup, and organizational
processes to prevent certificate-related outages.
|
| required_connections | [{"prefix":"slack","label":"Slack (for incident coordination)"}] |
| config_fields | [{"key":"affected_domain","label":"Affected Domain","required":true,"placeholder":"e.g., api.example.com, *.example.com"},{"key":"certificate_provider","label":"Certificate Provider","required":false,"placeholder":"e.g., Let's Encrypt, DigiCert, ACM"},{"key":"expiry_status","label":"Expiry Status","required":true,"placeholder":"e.g., expired 2 hours ago, expires in 24 hours"}] |
| features | ["INCIDENT"] |
Certificate Expiry Incident Response
Domain: {{ affected_domain }}
Provider: {{ certificate_provider }}
Status: {{ expiry_status }}
Impact of Expired Certificates
- Browsers show security warnings, blocking user access
- API clients reject connections with TLS errors
- Mobile apps may hard-fail with certificate pinning errors
- Service-to-service communication breaks if mTLS is used
- Webhooks from third parties fail
- Search engine rankings can be affected
Phase 1 — Immediate Diagnosis (0-5 min)
Check Certificate Status
echo | openssl s_client -servername {{ affected_domain }} -connect {{ affected_domain }}:443 2>/dev/null | openssl x509 -noout -dates -subject -issuer
echo | openssl s_client -servername {{ affected_domain }} -connect {{ affected_domain }}:443 -showcerts 2>/dev/null
echo | openssl s_client -servername {{ affected_domain }} -connect {{ affected_domain }}:443 2>/dev/null | openssl x509 -noout -checkend 0
openssl x509 -in /path/to/cert.pem -noout -dates
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5
Identify All Affected Endpoints
Phase 2 — Emergency Renewal (5-30 min)
Option 1: Automated Renewal (Let's Encrypt / ACME)
sudo certbot renew --cert-name {{ affected_domain }} --force-renewal
sudo certbot certificates --cert-name {{ affected_domain }}
Option 2: Cloud Provider Managed Certificates
aws acm request-certificate \
--domain-name {{ affected_domain }} \
--validation-method DNS
gcloud compute ssl-certificates describe CERT_NAME
az webapp config ssl list --resource-group RG_NAME
Option 3: Manual Certificate Renewal
- Generate new CSR:
openssl req -new -newkey rsa:2048 -nodes \
-keyout {{ affected_domain }}.key \
-out {{ affected_domain }}.csr \
-subj "/CN={{ affected_domain }}"
- Submit CSR to certificate provider ({{ certificate_provider }})
- Complete domain validation (DNS or HTTP)
- Download and install new certificate
Option 4: Emergency Self-Signed (last resort, internal only)
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout emergency.key -out emergency.crt \
-days 30 -subj "/CN={{ affected_domain }}"
WARNING: Self-signed certificates will cause browser warnings and API client failures. Use only for internal services as a temporary measure.
Phase 3 — Deploy New Certificate
Deployment Checklist
Verification After Deployment
echo | openssl s_client -servername {{ affected_domain }} -connect {{ affected_domain }}:443 2>/dev/null | openssl x509 -noout -dates -subject
curl -vI https://{{ affected_domain }} 2>&1 | grep -E "expire|subject|issuer|SSL"
echo | openssl s_client -servername {{ affected_domain }} -connect {{ affected_domain }}:443 2>/dev/null | grep -E "Verify|depth"
Verification Checklist
Phase 4 — Prevention
Automated Renewal Setup
Monitoring and Alerting
Organizational Process
Counter-Rationalizations
| Shortcut | Counter | Why |
|---|
| "We can skip some steps for this case" | Adapt the workflow steps, don't skip them | Skipped steps are where incidents and oversights originate |
| "The user seems to already know what to do" | Complete all workflow phases with the user | The workflow catches blind spots that experience alone misses |
| "This is a minor case, full process is overkill" | Scale the process down, don't turn it off | Minor cases become major when unstructured; the process scales, not disappears |
| "I'll fill in the details later" | Complete each section before moving on | Deferred details are forgotten; real-time capture is more accurate |
| "The template output isn't necessary" | Always produce the structured output format | Structured output enables comparison, audit trails, and handoff to other teams |